From 01757cfe1ab3b94effd79b9524f0eecc445fdd1e Mon Sep 17 00:00:00 2001 From: Arnob Kumar Saha Date: Fri, 12 Jul 2024 19:52:38 +0600 Subject: [PATCH] Update for kubedb api v1 (#307) Signed-off-by: Arnob kumar saha --- go.mod | 4 +- go.sum | 8 +- .../menuoutlines/ace/kubedb-accordion.yaml | 16 +- .../hub/menuoutlines/ace/kubedb-gallery.yaml | 16 +- .../kubedb.com/v1alpha2/druids.yaml | 6 +- .../kubedb.com/v1alpha2/elasticsearches.yaml | 6 +- .../kubedb.com/v1alpha2/etcds.yaml | 6 +- .../kubedb.com/v1alpha2/ferretdbs.yaml | 6 +- .../kubedb.com/v1alpha2/kafkas.yaml | 6 +- .../kubedb.com/v1alpha2/mariadbs.yaml | 6 +- .../kubedb.com/v1alpha2/memcacheds.yaml | 6 +- .../kubedb.com/v1alpha2/mongodbs.yaml | 6 +- .../kubedb.com/v1alpha2/mssqlservers.yaml | 6 +- .../kubedb.com/v1alpha2/mysqls.yaml | 6 +- .../kubedb.com/v1alpha2/perconaxtradbs.yaml | 6 +- .../kubedb.com/v1alpha2/pgbouncers.yaml | 6 +- .../kubedb.com/v1alpha2/pgpools.yaml | 6 +- .../kubedb.com/v1alpha2/postgreses.yaml | 6 +- .../kubedb.com/v1alpha2/proxysqls.yaml | 6 +- .../kubedb.com/v1alpha2/rabbitmqs.yaml | 6 +- .../kubedb.com/v1alpha2/redises.yaml | 6 +- .../kubedb.com/v1alpha2/redissentinels.yaml | 6 +- .../kubedb.com/v1alpha2/singlestores.yaml | 6 +- .../kubedb.com/v1alpha2/solrs.yaml | 6 +- .../kubedb.com/v1alpha2/zookeepers.yaml | 6 +- .../apps.k8s.appscode.com/v1/petsets.yaml | 8936 +++++++++++++++++ .../v1/placementpolicies.yaml | 130 + .../v1alpha1/clickhouseversions.yaml | 15 + .../v1alpha1/druidversions.yaml | 15 + .../v1alpha1/elasticsearchversions.yaml | 15 + .../v1alpha1/ferretdbversions.yaml | 15 + .../v1alpha1/kafkaversions.yaml | 15 + .../v1alpha1/mariadbversions.yaml | 15 + .../v1alpha1/memcachedversions.yaml | 15 + .../v1alpha1/mongodbversions.yaml | 15 + .../v1alpha1/mssqlserverversions.yaml | 15 + .../v1alpha1/mysqlversions.yaml | 15 + .../v1alpha1/perconaxtradbversions.yaml | 15 + .../v1alpha1/pgbouncerversions.yaml | 15 + .../v1alpha1/pgpoolversions.yaml | 15 + .../v1alpha1/postgresversions.yaml | 15 + .../v1alpha1/proxysqlversions.yaml | 15 + .../v1alpha1/rabbitmqversions.yaml | 15 + .../v1alpha1/redisversions.yaml | 15 + .../kubedb.com/v1/elasticsearches.yaml | 102 + .../kubedb.com/v1/kafkas.yaml | 96 + .../kubedb.com/v1/mariadbs.yaml | 104 + .../kubedb.com/v1/memcacheds.yaml | 65 + .../kubedb.com/v1/mongodbs.yaml | 123 + .../kubedb.com/v1/mysqls.yaml | 143 + .../kubedb.com/v1/perconaxtradbs.yaml | 61 + .../kubedb.com/v1/pgbouncers.yaml | 51 + .../kubedb.com/v1/postgreses.yaml | 120 + .../kubedb.com/v1/proxysqls.yaml | 79 + .../kubedb.com/v1/redises.yaml | 106 +- .../kubedb.com/v1alpha2/druids.yaml | 4 +- .../kubedb.com/v1alpha2/elasticsearches.yaml | 4 +- .../kubedb.com/v1alpha2/etcds.yaml | 4 +- .../kubedb.com/v1alpha2/ferretdbs.yaml | 4 +- .../kubedb.com/v1alpha2/kafkas.yaml | 4 +- .../kubedb.com/v1alpha2/mariadbs.yaml | 4 +- .../kubedb.com/v1alpha2/memcacheds.yaml | 4 +- .../kubedb.com/v1alpha2/mongodbs.yaml | 4 +- .../kubedb.com/v1alpha2/mssqlservers.yaml | 4 +- .../kubedb.com/v1alpha2/mysqls.yaml | 4 +- .../kubedb.com/v1alpha2/perconaxtradbs.yaml | 4 +- .../kubedb.com/v1alpha2/pgbouncers.yaml | 4 +- .../kubedb.com/v1alpha2/pgpools.yaml | 4 +- .../kubedb.com/v1alpha2/postgreses.yaml | 4 +- .../kubedb.com/v1alpha2/proxysqls.yaml | 4 +- .../kubedb.com/v1alpha2/rabbitmqs.yaml | 4 +- .../kubedb.com/v1alpha2/redises.yaml | 4 +- .../kubedb.com/v1alpha2/singlestores.yaml | 4 +- .../kubedb.com/v1alpha2/solrs.yaml | 4 +- .../kubedb.com/v1alpha2/zookeepers.yaml | 4 +- .../v1alpha1/pgbounceropsrequests.yaml | 90 +- .../v1alpha1/redisopsrequests.yaml | 4 +- .../v1alpha1/solropsrequests.yaml | 85 + .../apps.k8s.appscode.com/v1/petsets.yaml | 31 + .../v1/placementpolicies.yaml | 17 + .../kubedb.com/v1/elasticsearches.yaml | 163 + .../resourceeditors/kubedb.com/v1/kafkas.yaml | 43 + .../kubedb.com/v1/mariadbs.yaml | 177 + .../kubedb.com/v1/memcacheds.yaml | 26 + .../kubedb.com/v1/mongodbs.yaml | 207 + .../resourceeditors/kubedb.com/v1/mysqls.yaml | 177 + .../kubedb.com/v1/perconaxtradbs.yaml | 26 + .../kubedb.com/v1/pgbouncers.yaml | 26 + .../kubedb.com/v1/postgreses.yaml | 177 + .../kubedb.com/v1/proxysqls.yaml | 131 + .../kubedb.com/v1/redises.yaml | 177 + .../kubedb.com/v1/redissentinels.yaml | 19 + .../v1alpha1/solropsrequests.yaml | 17 + .../apps.k8s.appscode.com/v1/petsets.yaml | 95 + .../v1/placementpolicies.yaml | 18 + .../kubedb.com/v1/elasticsearches.yaml | 73 + .../kubedb.com/v1/kafkas.yaml | 69 + .../kubedb.com/v1/mariadbs.yaml | 77 + .../kubedb.com/v1/memcacheds.yaml | 73 + .../kubedb.com/v1/mongodbs.yaml | 85 + .../kubedb.com/v1/mysqls.yaml | 89 + .../kubedb.com/v1/perconaxtradbs.yaml | 73 + .../kubedb.com/v1/pgbouncers.yaml | 73 + .../kubedb.com/v1/postgreses.yaml | 77 + .../kubedb.com/v1/proxysqls.yaml | 73 + .../kubedb.com/v1/redises.yaml | 73 + .../kubedb.com/v1/redissentinels.yaml | 73 + .../v1alpha1/solropsrequests.yaml | 18 + .../resource-metrics/api/constants.go | 29 + .../resource-metrics/api/interface.go | 89 +- .../resource-metrics/apps/v1/daemonset.go | 10 +- .../resource-metrics/apps/v1/deployment.go | 10 +- .../resource-metrics/apps/v1/replicaset.go | 10 +- .../resource-metrics/apps/v1/statefulset.go | 10 +- .../resource-metrics/batch/v1/cronjob.go | 10 +- .../resource-metrics/batch/v1/job.go | 10 +- .../resource-metrics/batch/v1beta1/cronjob.go | 10 +- .../resource-metrics/calculator.go | 17 + .../resource-metrics/core/v1/pod.go | 10 +- .../resource-metrics/core/v1/rc.go | 10 +- .../v1alpha1/connectcluster.go | 10 +- .../kubedb.com/v1/constants.go | 43 + .../kubedb.com/v1/elasticsearch.go | 173 + .../resource-metrics/kubedb.com/v1/kafka.go | 140 + .../resource-metrics/kubedb.com/v1/mariadb.go | 94 + .../kubedb.com/v1/memcached.go | 94 + .../resource-metrics/kubedb.com/v1/mongodb.go | 171 + .../resource-metrics/kubedb.com/v1/mysql.go | 132 + .../kubedb.com/v1/perconaxtradb.go | 94 + .../kubedb.com/v1/pgbouncer.go | 94 + .../kubedb.com/v1/postgres.go | 95 + .../kubedb.com/v1/proxysql.go | 94 + .../resource-metrics/kubedb.com/v1/redis.go | 137 + .../kubedb.com/v1/redissentinel.go | 82 + .../kubedb.com/v1alpha2/druid.go | 39 +- .../kubedb.com/v1alpha2/elasticsearch.go | 29 +- .../kubedb.com/v1alpha2/ferretdb.go | 10 +- .../kubedb.com/v1alpha2/kafka.go | 29 +- .../kubedb.com/v1alpha2/mariadb.go | 10 +- .../kubedb.com/v1alpha2/memcached.go | 10 +- .../kubedb.com/v1alpha2/mongodb.go | 20 +- .../kubedb.com/v1alpha2/mysql.go | 12 +- .../kubedb.com/v1alpha2/perconaxtradb.go | 10 +- .../kubedb.com/v1alpha2/pgbouncer.go | 10 +- .../kubedb.com/v1alpha2/pgpool.go | 10 +- .../kubedb.com/v1alpha2/postgres.go | 10 +- .../kubedb.com/v1alpha2/proxysql.go | 10 +- .../kubedb.com/v1alpha2/rabbitmq.go | 10 +- .../kubedb.com/v1alpha2/redis.go | 10 +- .../kubedb.com/v1alpha2/redissentinel.go | 10 +- .../kubedb.com/v1alpha2/singlestore.go | 18 +- .../kubedb.com/v1alpha2/solr.go | 32 +- .../kubedb.com/v1alpha2/zookeeper.go | 10 +- .../kubevault.com/v1alpha2/vaultserver.go | 10 +- .../ops.kubedb.com/v1alpha1/calculator.go | 14 +- vendor/modules.txt | 5 +- 156 files changed, 14900 insertions(+), 359 deletions(-) create mode 100644 vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/apps.k8s.appscode.com/v1/petsets.yaml create mode 100644 vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/apps.k8s.appscode.com/v1/placementpolicies.yaml create mode 100644 vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/ops.kubedb.com/v1alpha1/solropsrequests.yaml create mode 100644 vendor/kmodules.xyz/resource-metadata/hub/resourceeditors/apps.k8s.appscode.com/v1/petsets.yaml create mode 100644 vendor/kmodules.xyz/resource-metadata/hub/resourceeditors/apps.k8s.appscode.com/v1/placementpolicies.yaml create mode 100644 vendor/kmodules.xyz/resource-metadata/hub/resourceeditors/ops.kubedb.com/v1alpha1/solropsrequests.yaml create mode 100644 vendor/kmodules.xyz/resource-metadata/hub/resourcetabledefinitions/apps.k8s.appscode.com/v1/petsets.yaml create mode 100644 vendor/kmodules.xyz/resource-metadata/hub/resourcetabledefinitions/apps.k8s.appscode.com/v1/placementpolicies.yaml create mode 100644 vendor/kmodules.xyz/resource-metadata/hub/resourcetabledefinitions/ops.kubedb.com/v1alpha1/solropsrequests.yaml create mode 100644 vendor/kmodules.xyz/resource-metrics/kubedb.com/v1/constants.go create mode 100644 vendor/kmodules.xyz/resource-metrics/kubedb.com/v1/elasticsearch.go create mode 100644 vendor/kmodules.xyz/resource-metrics/kubedb.com/v1/kafka.go create mode 100644 vendor/kmodules.xyz/resource-metrics/kubedb.com/v1/mariadb.go create mode 100644 vendor/kmodules.xyz/resource-metrics/kubedb.com/v1/memcached.go create mode 100644 vendor/kmodules.xyz/resource-metrics/kubedb.com/v1/mongodb.go create mode 100644 vendor/kmodules.xyz/resource-metrics/kubedb.com/v1/mysql.go create mode 100644 vendor/kmodules.xyz/resource-metrics/kubedb.com/v1/perconaxtradb.go create mode 100644 vendor/kmodules.xyz/resource-metrics/kubedb.com/v1/pgbouncer.go create mode 100644 vendor/kmodules.xyz/resource-metrics/kubedb.com/v1/postgres.go create mode 100644 vendor/kmodules.xyz/resource-metrics/kubedb.com/v1/proxysql.go create mode 100644 vendor/kmodules.xyz/resource-metrics/kubedb.com/v1/redis.go create mode 100644 vendor/kmodules.xyz/resource-metrics/kubedb.com/v1/redissentinel.go diff --git a/go.mod b/go.mod index 22761293f6..5d92eb9744 100644 --- a/go.mod +++ b/go.mod @@ -48,8 +48,8 @@ require ( kmodules.xyz/custom-resources v0.30.0 kmodules.xyz/go-containerregistry v0.0.12 kmodules.xyz/monitoring-agent-api v0.29.0 - kmodules.xyz/resource-metadata v0.18.11-0.20240711013212-9244361c17c6 - kmodules.xyz/resource-metrics v0.30.1 + kmodules.xyz/resource-metadata v0.18.11-0.20240712133719-cde3a1299082 + kmodules.xyz/resource-metrics v0.30.2-0.20240711131537-5e9d22977a2c kmodules.xyz/resource-metrics/utils v0.30.1 kmodules.xyz/sets v0.29.0 kubeops.dev/falco-ui-server v0.0.4 diff --git a/go.sum b/go.sum index f1abe447ae..3aa8a2a959 100644 --- a/go.sum +++ b/go.sum @@ -916,10 +916,10 @@ kmodules.xyz/monitoring-agent-api v0.29.0 h1:gpFl6OZrlMLb/ySMHdREI9EwGtnJ91oZBn9 kmodules.xyz/monitoring-agent-api v0.29.0/go.mod h1:iNbvaMTgVFOI5q2LJtGK91j4Dmjv4ZRiRdasGmWLKQI= kmodules.xyz/offshoot-api v0.29.4 h1:WQV2BIUIoVKKiqZNmZ4gAy367jEdwBhEl3dFCLZM1qA= kmodules.xyz/offshoot-api v0.29.4/go.mod h1:e+NQ0s4gW/YTPWBWEfdISZcmk+tlTq8IjvP5SLdqvko= -kmodules.xyz/resource-metadata v0.18.11-0.20240711013212-9244361c17c6 h1:BkaVsDiXfo1dzSBzozw+9ZsCt8rS37bS+TTD7ZeQeek= -kmodules.xyz/resource-metadata v0.18.11-0.20240711013212-9244361c17c6/go.mod h1:PXyZXif1b1QRpe0Pwr92OeOveptZricB0jLssCjsYTc= -kmodules.xyz/resource-metrics v0.30.1 h1:o7mVY8ZwSe5iEILy1eMG4EPZCli7mXZCkgQONjoY9uU= -kmodules.xyz/resource-metrics v0.30.1/go.mod h1:UYcQQLN+3o8rNPQJwJa2D9bt5ihJCeo5bCDuQ4O3MPY= +kmodules.xyz/resource-metadata v0.18.11-0.20240712133719-cde3a1299082 h1:DN36hieecVPVO05+YVkTHbnO7SedqMS3DpZ5PruW2CQ= +kmodules.xyz/resource-metadata v0.18.11-0.20240712133719-cde3a1299082/go.mod h1:1mOc2/WgOsn+f4tBKbHw8JgjWAEF52I6gOsVpyUE10M= +kmodules.xyz/resource-metrics v0.30.2-0.20240711131537-5e9d22977a2c h1:lh7s0AXSRezZx0YnKSmB5GqGpTk3PQ9xCYxhqdbNFjU= +kmodules.xyz/resource-metrics v0.30.2-0.20240711131537-5e9d22977a2c/go.mod h1:UYcQQLN+3o8rNPQJwJa2D9bt5ihJCeo5bCDuQ4O3MPY= kmodules.xyz/resource-metrics/utils v0.30.1 h1:iRnAKNMMdAi7QYjMQrK9W3vNMhSC21RWNx9yS3qlpTA= kmodules.xyz/resource-metrics/utils v0.30.1/go.mod h1:FvRK+7qmKsA7RQCMAraejVSS3y39DK1s1/zq/rKg970= kmodules.xyz/sets v0.29.0 h1:ZX/qOECzUob95JhhRtngJElHSlJ1UNNdwK4hTEy+nl0= diff --git a/vendor/kmodules.xyz/resource-metadata/hub/menuoutlines/ace/kubedb-accordion.yaml b/vendor/kmodules.xyz/resource-metadata/hub/menuoutlines/ace/kubedb-accordion.yaml index a26d1b612c..cd9c23ef59 100644 --- a/vendor/kmodules.xyz/resource-metadata/hub/menuoutlines/ace/kubedb-accordion.yaml +++ b/vendor/kmodules.xyz/resource-metadata/hub/menuoutlines/ace/kubedb-accordion.yaml @@ -15,55 +15,55 @@ spec: type: image/png items: - featureMode: GA - layoutName: kubedb.com-v1alpha2-elasticsearches-kubedb + layoutName: kubedb.com-v1-elasticsearches-kubedb name: Elasticsearch required: true type: group: kubedb.com kind: Elasticsearch - featureMode: GA - layoutName: kubedb.com-v1alpha2-kafkas-kubedb + layoutName: kubedb.com-v1-kafkas-kubedb name: Kafka required: true type: group: kubedb.com kind: Kafka - featureMode: GA - layoutName: kubedb.com-v1alpha2-mariadbs-kubedb + layoutName: kubedb.com-v1-mariadbs-kubedb name: MariaDB required: true type: group: kubedb.com kind: MariaDB - featureMode: GA - layoutName: kubedb.com-v1alpha2-mongodbs-kubedb + layoutName: kubedb.com-v1-mongodbs-kubedb name: MongoDB required: true type: group: kubedb.com kind: MongoDB - featureMode: GA - layoutName: kubedb.com-v1alpha2-mysqls-kubedb + layoutName: kubedb.com-v1-mysqls-kubedb name: MySQL required: true type: group: kubedb.com kind: MySQL - featureMode: GA - layoutName: kubedb.com-v1alpha2-postgreses-kubedb + layoutName: kubedb.com-v1-postgreses-kubedb name: PostgreSQL required: true type: group: kubedb.com kind: Postgres - featureMode: GA - layoutName: kubedb.com-v1alpha2-proxysqls-kubedb + layoutName: kubedb.com-v1-proxysqls-kubedb name: ProxySQL type: group: kubedb.com kind: ProxySQL - featureMode: GA - layoutName: kubedb.com-v1alpha2-redises-kubedb + layoutName: kubedb.com-v1-redises-kubedb name: Redis required: true type: diff --git a/vendor/kmodules.xyz/resource-metadata/hub/menuoutlines/ace/kubedb-gallery.yaml b/vendor/kmodules.xyz/resource-metadata/hub/menuoutlines/ace/kubedb-gallery.yaml index edc0090850..15b4aa8fed 100644 --- a/vendor/kmodules.xyz/resource-metadata/hub/menuoutlines/ace/kubedb-gallery.yaml +++ b/vendor/kmodules.xyz/resource-metadata/hub/menuoutlines/ace/kubedb-gallery.yaml @@ -15,55 +15,55 @@ spec: type: image/png items: - featureMode: GA - layoutName: kubedb.com-v1alpha2-elasticsearches-kubedb + layoutName: kubedb.com-v1-elasticsearches-kubedb name: Elasticsearch required: true type: group: kubedb.com kind: Elasticsearch - featureMode: GA - layoutName: kubedb.com-v1alpha2-kafkas-kubedb + layoutName: kubedb.com-v1-kafkas-kubedb name: Kafka required: true type: group: kubedb.com kind: Kafka - featureMode: GA - layoutName: kubedb.com-v1alpha2-mariadbs-kubedb + layoutName: kubedb.com-v1-mariadbs-kubedb name: MariaDB required: true type: group: kubedb.com kind: MariaDB - featureMode: GA - layoutName: kubedb.com-v1alpha2-mongodbs-kubedb + layoutName: kubedb.com-v1-mongodbs-kubedb name: MongoDB required: true type: group: kubedb.com kind: MongoDB - featureMode: GA - layoutName: kubedb.com-v1alpha2-mysqls-kubedb + layoutName: kubedb.com-v1-mysqls-kubedb name: MySQL required: true type: group: kubedb.com kind: MySQL - featureMode: GA - layoutName: kubedb.com-v1alpha2-postgreses-kubedb + layoutName: kubedb.com-v1-postgreses-kubedb name: PostgreSQL required: true type: group: kubedb.com kind: Postgres - featureMode: GA - layoutName: kubedb.com-v1alpha2-proxysqles-kubedb + layoutName: kubedb.com-v1-proxysqles-kubedb name: ProxySQL type: group: kubedb.com kind: ProxySQL - featureMode: GA - layoutName: kubedb.com-v1alpha2-redises-kubedb + layoutName: kubedb.com-v1-redises-kubedb name: Redis required: true type: diff --git a/vendor/kmodules.xyz/resource-metadata/hub/resourceblockdefinitions/kubedb.com/v1alpha2/druids.yaml b/vendor/kmodules.xyz/resource-metadata/hub/resourceblockdefinitions/kubedb.com/v1alpha2/druids.yaml index de586a3b98..799c77e054 100644 --- a/vendor/kmodules.xyz/resource-metadata/hub/resourceblockdefinitions/kubedb.com/v1alpha2/druids.yaml +++ b/vendor/kmodules.xyz/resource-metadata/hub/resourceblockdefinitions/kubedb.com/v1alpha2/druids.yaml @@ -36,13 +36,13 @@ spec: create: Never displayMode: List kind: Connection - name: StatefulSets + name: PetSets query: byLabel: offshoot type: GraphQL ref: - group: apps - kind: StatefulSet + group: apps.k8s.appscode.com + kind: PetSet - actions: create: Never displayMode: List diff --git a/vendor/kmodules.xyz/resource-metadata/hub/resourceblockdefinitions/kubedb.com/v1alpha2/elasticsearches.yaml b/vendor/kmodules.xyz/resource-metadata/hub/resourceblockdefinitions/kubedb.com/v1alpha2/elasticsearches.yaml index 6579cc4cde..9608cffe9d 100644 --- a/vendor/kmodules.xyz/resource-metadata/hub/resourceblockdefinitions/kubedb.com/v1alpha2/elasticsearches.yaml +++ b/vendor/kmodules.xyz/resource-metadata/hub/resourceblockdefinitions/kubedb.com/v1alpha2/elasticsearches.yaml @@ -36,13 +36,13 @@ spec: create: Never displayMode: List kind: Connection - name: StatefulSets + name: PetSets query: byLabel: offshoot type: GraphQL ref: - group: apps - kind: StatefulSet + group: apps.k8s.appscode.com + kind: PetSet - actions: create: Never displayMode: List diff --git a/vendor/kmodules.xyz/resource-metadata/hub/resourceblockdefinitions/kubedb.com/v1alpha2/etcds.yaml b/vendor/kmodules.xyz/resource-metadata/hub/resourceblockdefinitions/kubedb.com/v1alpha2/etcds.yaml index 97f0b576cb..cf999f0eba 100644 --- a/vendor/kmodules.xyz/resource-metadata/hub/resourceblockdefinitions/kubedb.com/v1alpha2/etcds.yaml +++ b/vendor/kmodules.xyz/resource-metadata/hub/resourceblockdefinitions/kubedb.com/v1alpha2/etcds.yaml @@ -36,13 +36,13 @@ spec: create: Never displayMode: List kind: Connection - name: StatefulSets + name: PetSets query: byLabel: offshoot type: GraphQL ref: - group: apps - kind: StatefulSet + group: apps.k8s.appscode.com + kind: PetSet - actions: create: Never displayMode: List diff --git a/vendor/kmodules.xyz/resource-metadata/hub/resourceblockdefinitions/kubedb.com/v1alpha2/ferretdbs.yaml b/vendor/kmodules.xyz/resource-metadata/hub/resourceblockdefinitions/kubedb.com/v1alpha2/ferretdbs.yaml index fcf007dc42..ecf22a086d 100644 --- a/vendor/kmodules.xyz/resource-metadata/hub/resourceblockdefinitions/kubedb.com/v1alpha2/ferretdbs.yaml +++ b/vendor/kmodules.xyz/resource-metadata/hub/resourceblockdefinitions/kubedb.com/v1alpha2/ferretdbs.yaml @@ -36,13 +36,13 @@ spec: create: Never displayMode: List kind: Connection - name: StatefulSets + name: PetSets query: byLabel: offshoot type: GraphQL ref: - group: apps - kind: StatefulSet + group: apps.k8s.appscode.com + kind: PetSet - actions: create: Never displayMode: List diff --git a/vendor/kmodules.xyz/resource-metadata/hub/resourceblockdefinitions/kubedb.com/v1alpha2/kafkas.yaml b/vendor/kmodules.xyz/resource-metadata/hub/resourceblockdefinitions/kubedb.com/v1alpha2/kafkas.yaml index 427cbf4260..4b49241e80 100644 --- a/vendor/kmodules.xyz/resource-metadata/hub/resourceblockdefinitions/kubedb.com/v1alpha2/kafkas.yaml +++ b/vendor/kmodules.xyz/resource-metadata/hub/resourceblockdefinitions/kubedb.com/v1alpha2/kafkas.yaml @@ -36,13 +36,13 @@ spec: create: Never displayMode: List kind: Connection - name: StatefulSets + name: PetSets query: byLabel: offshoot type: GraphQL ref: - group: apps - kind: StatefulSet + group: apps.k8s.appscode.com + kind: PetSet - actions: create: Never displayMode: List diff --git a/vendor/kmodules.xyz/resource-metadata/hub/resourceblockdefinitions/kubedb.com/v1alpha2/mariadbs.yaml b/vendor/kmodules.xyz/resource-metadata/hub/resourceblockdefinitions/kubedb.com/v1alpha2/mariadbs.yaml index ada877b646..78c4edb507 100644 --- a/vendor/kmodules.xyz/resource-metadata/hub/resourceblockdefinitions/kubedb.com/v1alpha2/mariadbs.yaml +++ b/vendor/kmodules.xyz/resource-metadata/hub/resourceblockdefinitions/kubedb.com/v1alpha2/mariadbs.yaml @@ -36,13 +36,13 @@ spec: create: Never displayMode: List kind: Connection - name: StatefulSets + name: PetSets query: byLabel: offshoot type: GraphQL ref: - group: apps - kind: StatefulSet + group: apps.k8s.appscode.com + kind: PetSet - actions: create: Never displayMode: List diff --git a/vendor/kmodules.xyz/resource-metadata/hub/resourceblockdefinitions/kubedb.com/v1alpha2/memcacheds.yaml b/vendor/kmodules.xyz/resource-metadata/hub/resourceblockdefinitions/kubedb.com/v1alpha2/memcacheds.yaml index 12ec12ed35..c8b11b652a 100644 --- a/vendor/kmodules.xyz/resource-metadata/hub/resourceblockdefinitions/kubedb.com/v1alpha2/memcacheds.yaml +++ b/vendor/kmodules.xyz/resource-metadata/hub/resourceblockdefinitions/kubedb.com/v1alpha2/memcacheds.yaml @@ -36,13 +36,13 @@ spec: create: Never displayMode: List kind: Connection - name: StatefulSets + name: PetSets query: byLabel: offshoot type: GraphQL ref: - group: apps - kind: StatefulSet + group: apps.k8s.appscode.com + kind: PetSet - actions: create: Never displayMode: List diff --git a/vendor/kmodules.xyz/resource-metadata/hub/resourceblockdefinitions/kubedb.com/v1alpha2/mongodbs.yaml b/vendor/kmodules.xyz/resource-metadata/hub/resourceblockdefinitions/kubedb.com/v1alpha2/mongodbs.yaml index 54119f7022..428a68b309 100644 --- a/vendor/kmodules.xyz/resource-metadata/hub/resourceblockdefinitions/kubedb.com/v1alpha2/mongodbs.yaml +++ b/vendor/kmodules.xyz/resource-metadata/hub/resourceblockdefinitions/kubedb.com/v1alpha2/mongodbs.yaml @@ -36,13 +36,13 @@ spec: create: Never displayMode: List kind: Connection - name: StatefulSets + name: PetSets query: byLabel: offshoot type: GraphQL ref: - group: apps - kind: StatefulSet + group: apps.k8s.appscode.com + kind: PetSet - actions: create: Never displayMode: List diff --git a/vendor/kmodules.xyz/resource-metadata/hub/resourceblockdefinitions/kubedb.com/v1alpha2/mssqlservers.yaml b/vendor/kmodules.xyz/resource-metadata/hub/resourceblockdefinitions/kubedb.com/v1alpha2/mssqlservers.yaml index 39ad355ec4..e5c85e7689 100644 --- a/vendor/kmodules.xyz/resource-metadata/hub/resourceblockdefinitions/kubedb.com/v1alpha2/mssqlservers.yaml +++ b/vendor/kmodules.xyz/resource-metadata/hub/resourceblockdefinitions/kubedb.com/v1alpha2/mssqlservers.yaml @@ -36,13 +36,13 @@ spec: create: Never displayMode: List kind: Connection - name: StatefulSets + name: PetSets query: byLabel: offshoot type: GraphQL ref: - group: apps - kind: StatefulSet + group: apps.k8s.appscode.com + kind: PetSet - actions: create: Never displayMode: List diff --git a/vendor/kmodules.xyz/resource-metadata/hub/resourceblockdefinitions/kubedb.com/v1alpha2/mysqls.yaml b/vendor/kmodules.xyz/resource-metadata/hub/resourceblockdefinitions/kubedb.com/v1alpha2/mysqls.yaml index befdfba168..d8ec8e2fb8 100644 --- a/vendor/kmodules.xyz/resource-metadata/hub/resourceblockdefinitions/kubedb.com/v1alpha2/mysqls.yaml +++ b/vendor/kmodules.xyz/resource-metadata/hub/resourceblockdefinitions/kubedb.com/v1alpha2/mysqls.yaml @@ -36,13 +36,13 @@ spec: create: Never displayMode: List kind: Connection - name: StatefulSets + name: PetSets query: byLabel: offshoot type: GraphQL ref: - group: apps - kind: StatefulSet + group: apps.k8s.appscode.com + kind: PetSet - actions: create: Never displayMode: List diff --git a/vendor/kmodules.xyz/resource-metadata/hub/resourceblockdefinitions/kubedb.com/v1alpha2/perconaxtradbs.yaml b/vendor/kmodules.xyz/resource-metadata/hub/resourceblockdefinitions/kubedb.com/v1alpha2/perconaxtradbs.yaml index 7443d7decb..b2a889e7de 100644 --- a/vendor/kmodules.xyz/resource-metadata/hub/resourceblockdefinitions/kubedb.com/v1alpha2/perconaxtradbs.yaml +++ b/vendor/kmodules.xyz/resource-metadata/hub/resourceblockdefinitions/kubedb.com/v1alpha2/perconaxtradbs.yaml @@ -36,13 +36,13 @@ spec: create: Never displayMode: List kind: Connection - name: StatefulSets + name: PetSets query: byLabel: offshoot type: GraphQL ref: - group: apps - kind: StatefulSet + group: apps.k8s.appscode.com + kind: PetSet - actions: create: Never displayMode: List diff --git a/vendor/kmodules.xyz/resource-metadata/hub/resourceblockdefinitions/kubedb.com/v1alpha2/pgbouncers.yaml b/vendor/kmodules.xyz/resource-metadata/hub/resourceblockdefinitions/kubedb.com/v1alpha2/pgbouncers.yaml index 25b1a9bf7c..4ea6095022 100644 --- a/vendor/kmodules.xyz/resource-metadata/hub/resourceblockdefinitions/kubedb.com/v1alpha2/pgbouncers.yaml +++ b/vendor/kmodules.xyz/resource-metadata/hub/resourceblockdefinitions/kubedb.com/v1alpha2/pgbouncers.yaml @@ -36,13 +36,13 @@ spec: create: Never displayMode: List kind: Connection - name: StatefulSets + name: PetSets query: byLabel: offshoot type: GraphQL ref: - group: apps - kind: StatefulSet + group: apps.k8s.appscode.com + kind: PetSet - actions: create: Never displayMode: List diff --git a/vendor/kmodules.xyz/resource-metadata/hub/resourceblockdefinitions/kubedb.com/v1alpha2/pgpools.yaml b/vendor/kmodules.xyz/resource-metadata/hub/resourceblockdefinitions/kubedb.com/v1alpha2/pgpools.yaml index 821c9e35ac..2ce1e28a3d 100644 --- a/vendor/kmodules.xyz/resource-metadata/hub/resourceblockdefinitions/kubedb.com/v1alpha2/pgpools.yaml +++ b/vendor/kmodules.xyz/resource-metadata/hub/resourceblockdefinitions/kubedb.com/v1alpha2/pgpools.yaml @@ -36,13 +36,13 @@ spec: create: Never displayMode: List kind: Connection - name: StatefulSets + name: PetSets query: byLabel: offshoot type: GraphQL ref: - group: apps - kind: StatefulSet + group: apps.k8s.appscode.com + kind: PetSet - actions: create: Never displayMode: List diff --git a/vendor/kmodules.xyz/resource-metadata/hub/resourceblockdefinitions/kubedb.com/v1alpha2/postgreses.yaml b/vendor/kmodules.xyz/resource-metadata/hub/resourceblockdefinitions/kubedb.com/v1alpha2/postgreses.yaml index 88e8f682bf..dbd3d7e03f 100644 --- a/vendor/kmodules.xyz/resource-metadata/hub/resourceblockdefinitions/kubedb.com/v1alpha2/postgreses.yaml +++ b/vendor/kmodules.xyz/resource-metadata/hub/resourceblockdefinitions/kubedb.com/v1alpha2/postgreses.yaml @@ -36,13 +36,13 @@ spec: create: Never displayMode: List kind: Connection - name: StatefulSets + name: PetSets query: byLabel: offshoot type: GraphQL ref: - group: apps - kind: StatefulSet + group: apps.k8s.appscode.com + kind: PetSet - actions: create: Never displayMode: List diff --git a/vendor/kmodules.xyz/resource-metadata/hub/resourceblockdefinitions/kubedb.com/v1alpha2/proxysqls.yaml b/vendor/kmodules.xyz/resource-metadata/hub/resourceblockdefinitions/kubedb.com/v1alpha2/proxysqls.yaml index 936d7602d7..841f6f3bbc 100644 --- a/vendor/kmodules.xyz/resource-metadata/hub/resourceblockdefinitions/kubedb.com/v1alpha2/proxysqls.yaml +++ b/vendor/kmodules.xyz/resource-metadata/hub/resourceblockdefinitions/kubedb.com/v1alpha2/proxysqls.yaml @@ -36,13 +36,13 @@ spec: create: Never displayMode: List kind: Connection - name: StatefulSets + name: PetSets query: byLabel: offshoot type: GraphQL ref: - group: apps - kind: StatefulSet + group: apps.k8s.appscode.com + kind: PetSet - actions: create: Never displayMode: List diff --git a/vendor/kmodules.xyz/resource-metadata/hub/resourceblockdefinitions/kubedb.com/v1alpha2/rabbitmqs.yaml b/vendor/kmodules.xyz/resource-metadata/hub/resourceblockdefinitions/kubedb.com/v1alpha2/rabbitmqs.yaml index a097d3f9d4..316b20e6bf 100644 --- a/vendor/kmodules.xyz/resource-metadata/hub/resourceblockdefinitions/kubedb.com/v1alpha2/rabbitmqs.yaml +++ b/vendor/kmodules.xyz/resource-metadata/hub/resourceblockdefinitions/kubedb.com/v1alpha2/rabbitmqs.yaml @@ -36,13 +36,13 @@ spec: create: Never displayMode: List kind: Connection - name: StatefulSets + name: PetSets query: byLabel: offshoot type: GraphQL ref: - group: apps - kind: StatefulSet + group: apps.k8s.appscode.com + kind: PetSet - actions: create: Never displayMode: List diff --git a/vendor/kmodules.xyz/resource-metadata/hub/resourceblockdefinitions/kubedb.com/v1alpha2/redises.yaml b/vendor/kmodules.xyz/resource-metadata/hub/resourceblockdefinitions/kubedb.com/v1alpha2/redises.yaml index 8f015cc2bd..7914bffbed 100644 --- a/vendor/kmodules.xyz/resource-metadata/hub/resourceblockdefinitions/kubedb.com/v1alpha2/redises.yaml +++ b/vendor/kmodules.xyz/resource-metadata/hub/resourceblockdefinitions/kubedb.com/v1alpha2/redises.yaml @@ -36,13 +36,13 @@ spec: create: Never displayMode: List kind: Connection - name: StatefulSets + name: PetSets query: byLabel: offshoot type: GraphQL ref: - group: apps - kind: StatefulSet + group: apps.k8s.appscode.com + kind: PetSet - actions: create: Never displayMode: List diff --git a/vendor/kmodules.xyz/resource-metadata/hub/resourceblockdefinitions/kubedb.com/v1alpha2/redissentinels.yaml b/vendor/kmodules.xyz/resource-metadata/hub/resourceblockdefinitions/kubedb.com/v1alpha2/redissentinels.yaml index b0b723b2ac..a104dd6575 100644 --- a/vendor/kmodules.xyz/resource-metadata/hub/resourceblockdefinitions/kubedb.com/v1alpha2/redissentinels.yaml +++ b/vendor/kmodules.xyz/resource-metadata/hub/resourceblockdefinitions/kubedb.com/v1alpha2/redissentinels.yaml @@ -36,13 +36,13 @@ spec: create: Never displayMode: List kind: Connection - name: StatefulSets + name: PetSets query: byLabel: offshoot type: GraphQL ref: - group: apps - kind: StatefulSet + group: apps.k8s.appscode.com + kind: PetSet - actions: create: Never displayMode: List diff --git a/vendor/kmodules.xyz/resource-metadata/hub/resourceblockdefinitions/kubedb.com/v1alpha2/singlestores.yaml b/vendor/kmodules.xyz/resource-metadata/hub/resourceblockdefinitions/kubedb.com/v1alpha2/singlestores.yaml index ea1ef46fc4..5e8d2a4ef7 100644 --- a/vendor/kmodules.xyz/resource-metadata/hub/resourceblockdefinitions/kubedb.com/v1alpha2/singlestores.yaml +++ b/vendor/kmodules.xyz/resource-metadata/hub/resourceblockdefinitions/kubedb.com/v1alpha2/singlestores.yaml @@ -36,13 +36,13 @@ spec: create: Never displayMode: List kind: Connection - name: StatefulSets + name: PetSets query: byLabel: offshoot type: GraphQL ref: - group: apps - kind: StatefulSet + group: apps.k8s.appscode.com + kind: PetSet - actions: create: Never displayMode: List diff --git a/vendor/kmodules.xyz/resource-metadata/hub/resourceblockdefinitions/kubedb.com/v1alpha2/solrs.yaml b/vendor/kmodules.xyz/resource-metadata/hub/resourceblockdefinitions/kubedb.com/v1alpha2/solrs.yaml index 353f10b0d7..4a8c8a5a09 100644 --- a/vendor/kmodules.xyz/resource-metadata/hub/resourceblockdefinitions/kubedb.com/v1alpha2/solrs.yaml +++ b/vendor/kmodules.xyz/resource-metadata/hub/resourceblockdefinitions/kubedb.com/v1alpha2/solrs.yaml @@ -36,13 +36,13 @@ spec: create: Never displayMode: List kind: Connection - name: StatefulSets + name: PetSets query: byLabel: offshoot type: GraphQL ref: - group: apps - kind: StatefulSet + group: apps.k8s.appscode.com + kind: PetSet - actions: create: Never displayMode: List diff --git a/vendor/kmodules.xyz/resource-metadata/hub/resourceblockdefinitions/kubedb.com/v1alpha2/zookeepers.yaml b/vendor/kmodules.xyz/resource-metadata/hub/resourceblockdefinitions/kubedb.com/v1alpha2/zookeepers.yaml index 50db9c6762..405661cb5e 100644 --- a/vendor/kmodules.xyz/resource-metadata/hub/resourceblockdefinitions/kubedb.com/v1alpha2/zookeepers.yaml +++ b/vendor/kmodules.xyz/resource-metadata/hub/resourceblockdefinitions/kubedb.com/v1alpha2/zookeepers.yaml @@ -36,13 +36,13 @@ spec: create: Never displayMode: List kind: Connection - name: StatefulSets + name: PetSets query: byLabel: offshoot type: GraphQL ref: - group: apps - kind: StatefulSet + group: apps.k8s.appscode.com + kind: PetSet - actions: create: Never displayMode: List diff --git a/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/apps.k8s.appscode.com/v1/petsets.yaml b/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/apps.k8s.appscode.com/v1/petsets.yaml new file mode 100644 index 0000000000..d076efa5b2 --- /dev/null +++ b/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/apps.k8s.appscode.com/v1/petsets.yaml @@ -0,0 +1,8936 @@ +apiVersion: meta.k8s.appscode.com/v1alpha1 +kind: ResourceDescriptor +metadata: + creationTimestamp: null + labels: + k8s.io/group: apps.k8s.appscode.com + k8s.io/kind: PetSet + k8s.io/resource: petsets + k8s.io/version: v1 + name: apps.k8s.appscode.com-v1-petsets +spec: + connections: + - labels: + - offshoot + level: Controller + namespace: + path: metadata.namespace + selectorPath: spec.selector + target: + apiVersion: v1 + kind: Pod + type: MatchSelector + - labels: + - offshoot + level: Controller + target: + apiVersion: monitoring.coreos.com/v1 + kind: Alertmanager + type: OwnedBy + - labels: + - offshoot + level: Controller + target: + apiVersion: monitoring.coreos.com/v1 + kind: Prometheus + type: OwnedBy + resource: + group: apps.k8s.appscode.com + kind: PetSet + name: petsets + scope: Namespaced + version: v1 + validation: + openAPIV3Schema: + description: "PetSet represents a set of pods with consistent identities. Identities + are defined as: - Network: A single stable DNS and hostname. - Storage: As + many VolumeClaims as requested. \n The PetSet guarantees that a given network + identity will always map to the same storage identity." + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + properties: + name: + description: 'Name must be unique within a namespace. Is required when + creating resources, although some resources may allow a client to + request the generation of an appropriate name automatically. Name + is primarily intended for creation idempotence and configuration definition. + Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names' + type: string + namespace: + description: "Namespace defines the space within which each name must + be unique. An empty namespace is equivalent to the \"default\" namespace, + but \"default\" is the canonical representation. Not all objects are + required to be scoped to a namespace - the value of this field for + those objects will be empty. \n Must be a DNS_LABEL. Cannot be updated. + More info: http://kubernetes.io/docs/user-guide/namespaces" + type: string + labels: + additionalProperties: + type: string + description: 'Map of string keys and values that can be used to organize + and categorize (scope and select) objects. May match selectors of + replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels' + type: object + annotations: + additionalProperties: + type: string + description: 'Annotations is an unstructured key value map stored with + a resource that may be set by external tools to store and retrieve + arbitrary metadata. They are not queryable and should be preserved + when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations' + type: object + type: object + spec: + description: Spec defines the desired identities of pods in this set. + properties: + minReadySeconds: + description: Minimum number of seconds for which a newly created pod + should be ready without any of its container crashing for it to be + considered available. Defaults to 0 (pod will be considered available + as soon as it is ready) + format: int32 + type: integer + ordinals: + description: ordinals controls the numbering of replica indices in a + PetSet. The default ordinals behavior assigns a "0" index to the first + replica and increments the index by one for each additional replica + requested. Using the ordinals field requires the PetSetStartOrdinal + feature gate to be enabled, which is beta. + properties: + start: + description: 'start is the number representing the first replica''s + index. It may be used to number replicas from an alternate index + (eg: 1-indexed) over the default 0-indexed names, or to orchestrate + progressive movement of replicas from one StatefulSet to another. + If set, replica indices will be in the range: [.spec.ordinals.start, + .spec.ordinals.start + .spec.replicas). If unset, defaults to + 0. Replica indices will be in the range: [0, .spec.replicas).' + format: int32 + type: integer + type: object + persistentVolumeClaimRetentionPolicy: + description: persistentVolumeClaimRetentionPolicy describes the lifecycle + of persistent volume claims created from volumeClaimTemplates. By + default, all persistent volume claims are created as needed and retained + until manually deleted. This policy allows the lifecycle to be altered, + for example by deleting persistent volume claims when their stateful + set is deleted, or when their pod is scaled down. This requires the + PetSetAutoDeletePVC feature gate to be enabled, which is alpha. +optional + properties: + whenDeleted: + description: WhenDeleted specifies what happens to PVCs created + from StatefulSet VolumeClaimTemplates when the StatefulSet is + deleted. The default policy of `Retain` causes PVCs to not be + affected by StatefulSet deletion. The `Delete` policy causes those + PVCs to be deleted. + type: string + whenScaled: + description: WhenScaled specifies what happens to PVCs created from + StatefulSet VolumeClaimTemplates when the StatefulSet is scaled + down. The default policy of `Retain` causes PVCs to not be affected + by a scaledown. The `Delete` policy causes the associated PVCs + for any excess pods above the replica count to be deleted. + type: string + type: object + podManagementPolicy: + description: podManagementPolicy controls how pods are created during + initial scale up, when replacing pods on nodes, or when scaling down. + The default policy is `OrderedReady`, where pods are created in increasing + order (pod-0, then pod-1, etc) and the controller will wait until + each pod is ready before continuing. When scaling down, the pods are + removed in the opposite order. The alternative policy is `Parallel` + which will create pods in parallel to match the desired scale without + waiting, and on scale down will delete all pods at once. + type: string + podPlacementPolicy: + description: LocalObjectReference contains enough information to let + you locate the referenced object inside the same namespace. + properties: + name: + default: "" + 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.' + type: string + type: object + x-kubernetes-map-type: atomic + replicas: + description: 'replicas is the desired number of replicas of the given + Template. These are replicas in the sense that they are instantiations + of the same Template, but individual replicas also have a consistent + identity. If unspecified, defaults to 1. TODO: Consider a rename of + this field.' + format: int32 + type: integer + revisionHistoryLimit: + description: revisionHistoryLimit is the maximum number of revisions + that will be maintained in the PetSet's revision history. The revision + history consists of all revisions not represented by a currently applied + PetSetSpec version. The default value is 10. + format: int32 + type: integer + selector: + description: 'selector is a label query over pods that should match + the replica count. It must match the pod template''s labels. More + info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors' + properties: + matchExpressions: + description: matchExpressions is a list of label selector requirements. + The requirements are ANDed. + items: + description: A label selector requirement is a selector that contains + values, a key, and an operator that relates the key and values. + properties: + key: + description: key is the label key that the selector applies + to. + type: string + operator: + description: operator represents a key's relationship to a + set of values. Valid operators are In, NotIn, Exists and + DoesNotExist. + type: string + values: + description: values is an array of string values. If the operator + is In or NotIn, the values array must be non-empty. If the + operator is Exists or DoesNotExist, the values array must + be empty. This array is replaced during a strategic merge + patch. + items: + type: string + type: array + x-kubernetes-list-type: atomic + required: + - key + - operator + type: object + type: array + x-kubernetes-list-type: atomic + matchLabels: + additionalProperties: + type: string + description: matchLabels is a map of {key,value} pairs. A single + {key,value} in the matchLabels map is equivalent to an element + of matchExpressions, whose key field is "key", the operator is + "In", and the values array contains only "value". The requirements + are ANDed. + type: object + type: object + x-kubernetes-map-type: atomic + serviceName: + description: 'serviceName is the name of the service that governs this + PetSet. This service must exist before the PetSet, and is responsible + for the network identity of the set. Pods get DNS/hostnames that follow + the pattern: pod-specific-string.serviceName.default.svc.cluster.local + where "pod-specific-string" is managed by the PetSet controller.' + type: string + template: + description: template is the object that describes the pod that will + be created if insufficient replicas are detected. Each pod stamped + out by the PetSet will fulfill this Template, but have a unique identity + from the rest of the PetSet. Each pod will be named with the format + -. For example, a pod in a PetSet named "web" + with index number "3" would be named "web-3". The only allowed template.spec.restartPolicy + value is "Always". + properties: + metadata: + description: 'Standard object''s metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata' + properties: + annotations: + additionalProperties: + type: string + type: object + finalizers: + items: + type: string + type: array + labels: + additionalProperties: + type: string + type: object + name: + type: string + namespace: + type: string + type: object + spec: + description: 'Specification of the desired behavior of the pod. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status' + properties: + activeDeadlineSeconds: + description: Optional duration in seconds the pod may be active + on the node relative to StartTime before the system will actively + try to mark it failed and kill associated containers. Value + must be a positive integer. + format: int64 + type: integer + affinity: + description: If specified, the pod's scheduling constraints + properties: + nodeAffinity: + description: Describes node affinity scheduling rules for + the pod. + properties: + preferredDuringSchedulingIgnoredDuringExecution: + description: The scheduler will prefer to schedule pods + to nodes that satisfy the affinity expressions specified + by this field, but it may choose a node that violates + one or more of the expressions. The node that is most + preferred is the one with the greatest sum of weights, + i.e. for each node that meets all of the scheduling + requirements (resource request, requiredDuringScheduling + affinity expressions, etc.), compute a sum by iterating + through the elements of this field and adding "weight" + to the sum if the node matches the corresponding matchExpressions; + the node(s) with the highest sum are the most preferred. + items: + description: An empty preferred scheduling term matches + all objects with implicit weight 0 (i.e. it's a + no-op). A null preferred scheduling term matches + no objects (i.e. is also a no-op). + properties: + preference: + description: A node selector term, associated + with the corresponding weight. + properties: + matchExpressions: + description: A list of node selector requirements + by node's labels. + items: + description: A node selector requirement + is a selector that contains values, a + key, and an operator that relates the + key and values. + properties: + key: + description: The label key that the + selector applies to. + type: string + operator: + description: Represents a key's relationship + to a set of values. Valid operators + are In, NotIn, Exists, DoesNotExist. + Gt, and Lt. + type: string + values: + description: An array of string values. + If the operator is In or NotIn, the + values array must be non-empty. If + the operator is Exists or DoesNotExist, + the values array must be empty. If + the operator is Gt or Lt, the values + array must have a single element, + which will be interpreted as an integer. + This array is replaced during a strategic + merge patch. + items: + type: string + type: array + x-kubernetes-list-type: atomic + required: + - key + - operator + type: object + type: array + x-kubernetes-list-type: atomic + matchFields: + description: A list of node selector requirements + by node's fields. + items: + description: A node selector requirement + is a selector that contains values, a + key, and an operator that relates the + key and values. + properties: + key: + description: The label key that the + selector applies to. + type: string + operator: + description: Represents a key's relationship + to a set of values. Valid operators + are In, NotIn, Exists, DoesNotExist. + Gt, and Lt. + type: string + values: + description: An array of string values. + If the operator is In or NotIn, the + values array must be non-empty. If + the operator is Exists or DoesNotExist, + the values array must be empty. If + the operator is Gt or Lt, the values + array must have a single element, + which will be interpreted as an integer. + This array is replaced during a strategic + merge patch. + items: + type: string + type: array + x-kubernetes-list-type: atomic + required: + - key + - operator + type: object + type: array + x-kubernetes-list-type: atomic + type: object + x-kubernetes-map-type: atomic + weight: + description: Weight associated with matching the + corresponding nodeSelectorTerm, in the range + 1-100. + format: int32 + type: integer + required: + - preference + - weight + type: object + type: array + x-kubernetes-list-type: atomic + requiredDuringSchedulingIgnoredDuringExecution: + description: If the affinity requirements specified + by this field are not met at scheduling time, the + pod will not be scheduled onto the node. If the affinity + requirements specified by this field cease to be met + at some point during pod execution (e.g. due to an + update), the system may or may not try to eventually + evict the pod from its node. + properties: + nodeSelectorTerms: + description: Required. A list of node selector terms. + The terms are ORed. + items: + description: A null or empty node selector term + matches no objects. The requirements of them + are ANDed. The TopologySelectorTerm type implements + a subset of the NodeSelectorTerm. + properties: + matchExpressions: + description: A list of node selector requirements + by node's labels. + items: + description: A node selector requirement + is a selector that contains values, a + key, and an operator that relates the + key and values. + properties: + key: + description: The label key that the + selector applies to. + type: string + operator: + description: Represents a key's relationship + to a set of values. Valid operators + are In, NotIn, Exists, DoesNotExist. + Gt, and Lt. + type: string + values: + description: An array of string values. + If the operator is In or NotIn, the + values array must be non-empty. If + the operator is Exists or DoesNotExist, + the values array must be empty. If + the operator is Gt or Lt, the values + array must have a single element, + which will be interpreted as an integer. + This array is replaced during a strategic + merge patch. + items: + type: string + type: array + x-kubernetes-list-type: atomic + required: + - key + - operator + type: object + type: array + x-kubernetes-list-type: atomic + matchFields: + description: A list of node selector requirements + by node's fields. + items: + description: A node selector requirement + is a selector that contains values, a + key, and an operator that relates the + key and values. + properties: + key: + description: The label key that the + selector applies to. + type: string + operator: + description: Represents a key's relationship + to a set of values. Valid operators + are In, NotIn, Exists, DoesNotExist. + Gt, and Lt. + type: string + values: + description: An array of string values. + If the operator is In or NotIn, the + values array must be non-empty. If + the operator is Exists or DoesNotExist, + the values array must be empty. If + the operator is Gt or Lt, the values + array must have a single element, + which will be interpreted as an integer. + This array is replaced during a strategic + merge patch. + items: + type: string + type: array + x-kubernetes-list-type: atomic + required: + - key + - operator + type: object + type: array + x-kubernetes-list-type: atomic + type: object + x-kubernetes-map-type: atomic + type: array + x-kubernetes-list-type: atomic + required: + - nodeSelectorTerms + type: object + x-kubernetes-map-type: atomic + type: object + podAffinity: + description: Describes pod affinity scheduling rules (e.g. + co-locate this pod in the same node, zone, etc. as some + other pod(s)). + properties: + preferredDuringSchedulingIgnoredDuringExecution: + description: The scheduler will prefer to schedule pods + to nodes that satisfy the affinity expressions specified + by this field, but it may choose a node that violates + one or more of the expressions. The node that is most + preferred is the one with the greatest sum of weights, + i.e. for each node that meets all of the scheduling + requirements (resource request, requiredDuringScheduling + affinity expressions, etc.), compute a sum by iterating + through the elements of this field and adding "weight" + to the sum if the node has pods which matches the + corresponding podAffinityTerm; the node(s) with the + highest sum are the most preferred. + items: + description: The weights of all of the matched WeightedPodAffinityTerm + fields are added per-node to find the most preferred + node(s) + properties: + podAffinityTerm: + description: Required. A pod affinity term, associated + with the corresponding weight. + properties: + labelSelector: + description: A label query over a set of resources, + in this case pods. If it's null, this PodAffinityTerm + matches with no Pods. + properties: + matchExpressions: + description: matchExpressions is a list + of label selector requirements. The + requirements are ANDed. + items: + description: A label selector requirement + is a selector that contains values, + a key, and an operator that relates + the key and values. + properties: + key: + description: key is the label key + that the selector applies to. + type: string + operator: + description: operator represents + a key's relationship to a set + of values. Valid operators are + In, NotIn, Exists and DoesNotExist. + type: string + values: + description: values is an array + of string values. If the operator + is In or NotIn, the values array + must be non-empty. If the operator + is Exists or DoesNotExist, the + values array must be empty. This + array is replaced during a strategic + merge patch. + items: + type: string + type: array + x-kubernetes-list-type: atomic + required: + - key + - operator + type: object + type: array + x-kubernetes-list-type: atomic + matchLabels: + additionalProperties: + type: string + description: matchLabels is a map of {key,value} + pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, + whose key field is "key", the operator + is "In", and the values array contains + only "value". The requirements are ANDed. + type: object + type: object + x-kubernetes-map-type: atomic + matchLabelKeys: + description: MatchLabelKeys is a set of pod + label keys to select 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. + items: + type: string + type: array + x-kubernetes-list-type: atomic + mismatchLabelKeys: + 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. + items: + type: string + type: array + x-kubernetes-list-type: atomic + namespaceSelector: + description: A label query over the set of + namespaces that the term applies to. The + term is applied to the union of the namespaces + selected by this field and the ones listed + in the namespaces field. null selector and + null or empty namespaces list means "this + pod's namespace". An empty selector ({}) + matches all namespaces. + properties: + matchExpressions: + description: matchExpressions is a list + of label selector requirements. The + requirements are ANDed. + items: + description: A label selector requirement + is a selector that contains values, + a key, and an operator that relates + the key and values. + properties: + key: + description: key is the label key + that the selector applies to. + type: string + operator: + description: operator represents + a key's relationship to a set + of values. Valid operators are + In, NotIn, Exists and DoesNotExist. + type: string + values: + description: values is an array + of string values. If the operator + is In or NotIn, the values array + must be non-empty. If the operator + is Exists or DoesNotExist, the + values array must be empty. This + array is replaced during a strategic + merge patch. + items: + type: string + type: array + x-kubernetes-list-type: atomic + required: + - key + - operator + type: object + type: array + x-kubernetes-list-type: atomic + matchLabels: + additionalProperties: + type: string + description: matchLabels is a map of {key,value} + pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, + whose key field is "key", the operator + is "In", and the values array contains + only "value". The requirements are ANDed. + type: object + type: object + x-kubernetes-map-type: atomic + namespaces: + description: namespaces specifies a static + list of namespace names that the term applies + to. The term is applied to the union of + the namespaces listed in this field and + the ones selected by namespaceSelector. + null or empty namespaces list and null namespaceSelector + means "this pod's namespace". + items: + type: string + type: array + x-kubernetes-list-type: atomic + topologyKey: + description: This pod should be co-located + (affinity) or not co-located (anti-affinity) + with the pods matching the labelSelector + in the specified namespaces, where co-located + is defined as running on a node whose value + of the label with key topologyKey matches + that of any node on which any of the selected + pods is running. Empty topologyKey is not + allowed. + type: string + required: + - topologyKey + type: object + weight: + description: weight associated with matching the + corresponding podAffinityTerm, in the range + 1-100. + format: int32 + type: integer + required: + - podAffinityTerm + - weight + type: object + type: array + x-kubernetes-list-type: atomic + requiredDuringSchedulingIgnoredDuringExecution: + description: If the affinity requirements specified + by this field are not met at scheduling time, the + pod will not be scheduled onto the node. If the affinity + requirements specified by this field cease to be met + at some point during pod execution (e.g. due to a + pod label update), the system may or may not try to + eventually evict the pod from its node. When there + are multiple elements, the lists of nodes corresponding + to each podAffinityTerm are intersected, i.e. all + terms must be satisfied. + items: + description: Defines a set of pods (namely those matching + the labelSelector relative to the given namespace(s)) + that this pod should be co-located (affinity) or + not co-located (anti-affinity) with, where co-located + is defined as running on a node whose value of the + label with key matches that of any + node on which a pod of the set of pods is running + properties: + labelSelector: + description: A label query over a set of resources, + in this case pods. If it's null, this PodAffinityTerm + matches with no Pods. + properties: + matchExpressions: + description: matchExpressions is a list of + label selector requirements. The requirements + are ANDed. + items: + description: A label selector requirement + is a selector that contains values, a + key, and an operator that relates the + key and values. + properties: + key: + description: key is the label key that + the selector applies to. + type: string + operator: + description: operator represents a key's + relationship to a set of values. Valid + operators are In, NotIn, Exists and + DoesNotExist. + type: string + values: + description: values is an array of string + values. If the operator is In or NotIn, + the values array must be non-empty. + If the operator is Exists or DoesNotExist, + the values array must be empty. This + array is replaced during a strategic + merge patch. + items: + type: string + type: array + x-kubernetes-list-type: atomic + required: + - key + - operator + type: object + type: array + x-kubernetes-list-type: atomic + matchLabels: + additionalProperties: + type: string + description: matchLabels is a map of {key,value} + pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, + whose key field is "key", the operator is + "In", and the values array contains only + "value". The requirements are ANDed. + type: object + type: object + x-kubernetes-map-type: atomic + matchLabelKeys: + description: MatchLabelKeys is a set of pod label + keys to select 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. + items: + type: string + type: array + x-kubernetes-list-type: atomic + mismatchLabelKeys: + 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. + items: + type: string + type: array + x-kubernetes-list-type: atomic + namespaceSelector: + description: A label query over the set of namespaces + that the term applies to. The term is applied + to the union of the namespaces selected by this + field and the ones listed in the namespaces + field. null selector and null or empty namespaces + list means "this pod's namespace". An empty + selector ({}) matches all namespaces. + properties: + matchExpressions: + description: matchExpressions is a list of + label selector requirements. The requirements + are ANDed. + items: + description: A label selector requirement + is a selector that contains values, a + key, and an operator that relates the + key and values. + properties: + key: + description: key is the label key that + the selector applies to. + type: string + operator: + description: operator represents a key's + relationship to a set of values. Valid + operators are In, NotIn, Exists and + DoesNotExist. + type: string + values: + description: values is an array of string + values. If the operator is In or NotIn, + the values array must be non-empty. + If the operator is Exists or DoesNotExist, + the values array must be empty. This + array is replaced during a strategic + merge patch. + items: + type: string + type: array + x-kubernetes-list-type: atomic + required: + - key + - operator + type: object + type: array + x-kubernetes-list-type: atomic + matchLabels: + additionalProperties: + type: string + description: matchLabels is a map of {key,value} + pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, + whose key field is "key", the operator is + "In", and the values array contains only + "value". The requirements are ANDed. + type: object + type: object + x-kubernetes-map-type: atomic + namespaces: + description: namespaces specifies a static list + of namespace names that the term applies to. + The term is applied to the union of the namespaces + listed in this field and the ones selected by + namespaceSelector. null or empty namespaces + list and null namespaceSelector means "this + pod's namespace". + items: + type: string + type: array + x-kubernetes-list-type: atomic + topologyKey: + description: This pod should be co-located (affinity) + or not co-located (anti-affinity) with the pods + matching the labelSelector in the specified + namespaces, where co-located is defined as running + on a node whose value of the label with key + topologyKey matches that of any node on which + any of the selected pods is running. Empty topologyKey + is not allowed. + type: string + required: + - topologyKey + type: object + type: array + x-kubernetes-list-type: atomic + type: object + podAntiAffinity: + description: Describes pod anti-affinity scheduling rules + (e.g. avoid putting this pod in the same node, zone, etc. + as some other pod(s)). + properties: + preferredDuringSchedulingIgnoredDuringExecution: + description: The scheduler will prefer to schedule pods + to nodes that satisfy the anti-affinity expressions + specified by this field, but it may choose a node + that violates one or more of the expressions. The + node that is most preferred is the one with the greatest + sum of weights, i.e. for each node that meets all + of the scheduling requirements (resource request, + requiredDuringScheduling anti-affinity expressions, + etc.), compute a sum by iterating through the elements + of this field and adding "weight" to the sum if the + node has pods which matches the corresponding podAffinityTerm; + the node(s) with the highest sum are the most preferred. + items: + description: The weights of all of the matched WeightedPodAffinityTerm + fields are added per-node to find the most preferred + node(s) + properties: + podAffinityTerm: + description: Required. A pod affinity term, associated + with the corresponding weight. + properties: + labelSelector: + description: A label query over a set of resources, + in this case pods. If it's null, this PodAffinityTerm + matches with no Pods. + properties: + matchExpressions: + description: matchExpressions is a list + of label selector requirements. The + requirements are ANDed. + items: + description: A label selector requirement + is a selector that contains values, + a key, and an operator that relates + the key and values. + properties: + key: + description: key is the label key + that the selector applies to. + type: string + operator: + description: operator represents + a key's relationship to a set + of values. Valid operators are + In, NotIn, Exists and DoesNotExist. + type: string + values: + description: values is an array + of string values. If the operator + is In or NotIn, the values array + must be non-empty. If the operator + is Exists or DoesNotExist, the + values array must be empty. This + array is replaced during a strategic + merge patch. + items: + type: string + type: array + x-kubernetes-list-type: atomic + required: + - key + - operator + type: object + type: array + x-kubernetes-list-type: atomic + matchLabels: + additionalProperties: + type: string + description: matchLabels is a map of {key,value} + pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, + whose key field is "key", the operator + is "In", and the values array contains + only "value". The requirements are ANDed. + type: object + type: object + x-kubernetes-map-type: atomic + matchLabelKeys: + description: MatchLabelKeys is a set of pod + label keys to select 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. + items: + type: string + type: array + x-kubernetes-list-type: atomic + mismatchLabelKeys: + 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. + items: + type: string + type: array + x-kubernetes-list-type: atomic + namespaceSelector: + description: A label query over the set of + namespaces that the term applies to. The + term is applied to the union of the namespaces + selected by this field and the ones listed + in the namespaces field. null selector and + null or empty namespaces list means "this + pod's namespace". An empty selector ({}) + matches all namespaces. + properties: + matchExpressions: + description: matchExpressions is a list + of label selector requirements. The + requirements are ANDed. + items: + description: A label selector requirement + is a selector that contains values, + a key, and an operator that relates + the key and values. + properties: + key: + description: key is the label key + that the selector applies to. + type: string + operator: + description: operator represents + a key's relationship to a set + of values. Valid operators are + In, NotIn, Exists and DoesNotExist. + type: string + values: + description: values is an array + of string values. If the operator + is In or NotIn, the values array + must be non-empty. If the operator + is Exists or DoesNotExist, the + values array must be empty. This + array is replaced during a strategic + merge patch. + items: + type: string + type: array + x-kubernetes-list-type: atomic + required: + - key + - operator + type: object + type: array + x-kubernetes-list-type: atomic + matchLabels: + additionalProperties: + type: string + description: matchLabels is a map of {key,value} + pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, + whose key field is "key", the operator + is "In", and the values array contains + only "value". The requirements are ANDed. + type: object + type: object + x-kubernetes-map-type: atomic + namespaces: + description: namespaces specifies a static + list of namespace names that the term applies + to. The term is applied to the union of + the namespaces listed in this field and + the ones selected by namespaceSelector. + null or empty namespaces list and null namespaceSelector + means "this pod's namespace". + items: + type: string + type: array + x-kubernetes-list-type: atomic + topologyKey: + description: This pod should be co-located + (affinity) or not co-located (anti-affinity) + with the pods matching the labelSelector + in the specified namespaces, where co-located + is defined as running on a node whose value + of the label with key topologyKey matches + that of any node on which any of the selected + pods is running. Empty topologyKey is not + allowed. + type: string + required: + - topologyKey + type: object + weight: + description: weight associated with matching the + corresponding podAffinityTerm, in the range + 1-100. + format: int32 + type: integer + required: + - podAffinityTerm + - weight + type: object + type: array + x-kubernetes-list-type: atomic + requiredDuringSchedulingIgnoredDuringExecution: + description: If the anti-affinity requirements specified + by this field are not met at scheduling time, the + pod will not be scheduled onto the node. If the anti-affinity + requirements specified by this field cease to be met + at some point during pod execution (e.g. due to a + pod label update), the system may or may not try to + eventually evict the pod from its node. When there + are multiple elements, the lists of nodes corresponding + to each podAffinityTerm are intersected, i.e. all + terms must be satisfied. + items: + description: Defines a set of pods (namely those matching + the labelSelector relative to the given namespace(s)) + that this pod should be co-located (affinity) or + not co-located (anti-affinity) with, where co-located + is defined as running on a node whose value of the + label with key matches that of any + node on which a pod of the set of pods is running + properties: + labelSelector: + description: A label query over a set of resources, + in this case pods. If it's null, this PodAffinityTerm + matches with no Pods. + properties: + matchExpressions: + description: matchExpressions is a list of + label selector requirements. The requirements + are ANDed. + items: + description: A label selector requirement + is a selector that contains values, a + key, and an operator that relates the + key and values. + properties: + key: + description: key is the label key that + the selector applies to. + type: string + operator: + description: operator represents a key's + relationship to a set of values. Valid + operators are In, NotIn, Exists and + DoesNotExist. + type: string + values: + description: values is an array of string + values. If the operator is In or NotIn, + the values array must be non-empty. + If the operator is Exists or DoesNotExist, + the values array must be empty. This + array is replaced during a strategic + merge patch. + items: + type: string + type: array + x-kubernetes-list-type: atomic + required: + - key + - operator + type: object + type: array + x-kubernetes-list-type: atomic + matchLabels: + additionalProperties: + type: string + description: matchLabels is a map of {key,value} + pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, + whose key field is "key", the operator is + "In", and the values array contains only + "value". The requirements are ANDed. + type: object + type: object + x-kubernetes-map-type: atomic + matchLabelKeys: + description: MatchLabelKeys is a set of pod label + keys to select 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. + items: + type: string + type: array + x-kubernetes-list-type: atomic + mismatchLabelKeys: + 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. + items: + type: string + type: array + x-kubernetes-list-type: atomic + namespaceSelector: + description: A label query over the set of namespaces + that the term applies to. The term is applied + to the union of the namespaces selected by this + field and the ones listed in the namespaces + field. null selector and null or empty namespaces + list means "this pod's namespace". An empty + selector ({}) matches all namespaces. + properties: + matchExpressions: + description: matchExpressions is a list of + label selector requirements. The requirements + are ANDed. + items: + description: A label selector requirement + is a selector that contains values, a + key, and an operator that relates the + key and values. + properties: + key: + description: key is the label key that + the selector applies to. + type: string + operator: + description: operator represents a key's + relationship to a set of values. Valid + operators are In, NotIn, Exists and + DoesNotExist. + type: string + values: + description: values is an array of string + values. If the operator is In or NotIn, + the values array must be non-empty. + If the operator is Exists or DoesNotExist, + the values array must be empty. This + array is replaced during a strategic + merge patch. + items: + type: string + type: array + x-kubernetes-list-type: atomic + required: + - key + - operator + type: object + type: array + x-kubernetes-list-type: atomic + matchLabels: + additionalProperties: + type: string + description: matchLabels is a map of {key,value} + pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, + whose key field is "key", the operator is + "In", and the values array contains only + "value". The requirements are ANDed. + type: object + type: object + x-kubernetes-map-type: atomic + namespaces: + description: namespaces specifies a static list + of namespace names that the term applies to. + The term is applied to the union of the namespaces + listed in this field and the ones selected by + namespaceSelector. null or empty namespaces + list and null namespaceSelector means "this + pod's namespace". + items: + type: string + type: array + x-kubernetes-list-type: atomic + topologyKey: + description: This pod should be co-located (affinity) + or not co-located (anti-affinity) with the pods + matching the labelSelector in the specified + namespaces, where co-located is defined as running + on a node whose value of the label with key + topologyKey matches that of any node on which + any of the selected pods is running. Empty topologyKey + is not allowed. + type: string + required: + - topologyKey + type: object + type: array + x-kubernetes-list-type: atomic + type: object + type: object + automountServiceAccountToken: + description: AutomountServiceAccountToken indicates whether + a service account token should be automatically mounted. + type: boolean + containers: + description: List of containers belonging to the pod. Containers + cannot currently be added or removed. There must be at least + one container in a Pod. Cannot be updated. + items: + description: A single application container that you want + to run within a pod. + properties: + args: + description: 'Arguments to the entrypoint. The container + image''s CMD is used if this is not provided. Variable + references $(VAR_NAME) are expanded using the container''s + environment. If a variable cannot be resolved, the reference + in the input string will be unchanged. Double $$ are + reduced to a single $, which allows for escaping the + $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will produce + the string literal "$(VAR_NAME)". Escaped references + will never be expanded, regardless of whether the variable + exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' + items: + type: string + type: array + x-kubernetes-list-type: atomic + command: + description: 'Entrypoint array. Not executed within a + shell. The container image''s ENTRYPOINT is used if + this is not provided. Variable references $(VAR_NAME) + are expanded using the container''s environment. If + a variable cannot be resolved, the reference in the + input string will be unchanged. Double $$ are reduced + to a single $, which allows for escaping the $(VAR_NAME) + syntax: i.e. "$$(VAR_NAME)" will produce the string + literal "$(VAR_NAME)". Escaped references will never + be expanded, regardless of whether the variable exists + or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' + items: + type: string + type: array + x-kubernetes-list-type: atomic + env: + description: List of environment variables to set in the + container. Cannot be updated. + items: + description: EnvVar represents an environment variable + present in a Container. + properties: + name: + description: Name of the environment variable. Must + be a C_IDENTIFIER. + type: string + value: + description: 'Variable references $(VAR_NAME) are + expanded using the previously defined environment + variables in the container and any service environment + variables. If a variable cannot be resolved, the + reference in the input string will be unchanged. + Double $$ are reduced to a single $, which allows + for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" + will produce the string literal "$(VAR_NAME)". + Escaped references will never be expanded, regardless + of whether the variable exists or not. Defaults + to "".' + type: string + valueFrom: + description: Source for the environment variable's + value. Cannot be used if value is not empty. + properties: + configMapKeyRef: + description: Selects a key of a ConfigMap. + properties: + key: + description: The key to select. + type: string + name: + default: "" + 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.' + type: string + optional: + description: Specify whether the ConfigMap + or its key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + fieldRef: + description: 'Selects a field of the pod: supports + metadata.name, metadata.namespace, `metadata.labels['''']`, + `metadata.annotations['''']`, spec.nodeName, + spec.serviceAccountName, status.hostIP, status.podIP, + status.podIPs.' + properties: + apiVersion: + description: Version of the schema the FieldPath + is written in terms of, defaults to "v1". + type: string + fieldPath: + description: Path of the field to select + in the specified API version. + type: string + required: + - fieldPath + type: object + x-kubernetes-map-type: atomic + resourceFieldRef: + description: 'Selects a resource of the container: + only resources limits and requests (limits.cpu, + limits.memory, limits.ephemeral-storage, requests.cpu, + requests.memory and requests.ephemeral-storage) + are currently supported.' + properties: + containerName: + description: 'Container name: required for + volumes, optional for env vars' + type: string + divisor: + anyOf: + - type: integer + - type: string + description: Specifies the output format + of the exposed resources, defaults to + "1" + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + description: 'Required: resource to select' + type: string + required: + - resource + type: object + x-kubernetes-map-type: atomic + secretKeyRef: + description: Selects a key of a secret in the + pod's namespace + properties: + key: + description: The key of the secret to select + from. Must be a valid secret key. + type: string + name: + default: "" + 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.' + type: string + optional: + description: Specify whether the Secret + or its key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + type: object + required: + - name + type: object + type: array + x-kubernetes-list-map-keys: + - name + x-kubernetes-list-type: map + envFrom: + description: List of sources to populate environment variables + in the container. The keys defined within a source must + be a C_IDENTIFIER. All invalid keys will be reported + as an event when the container is starting. When a key + exists in multiple sources, the value associated with + the last source will take precedence. Values defined + by an Env with a duplicate key will take precedence. + Cannot be updated. + items: + description: EnvFromSource represents the source of + a set of ConfigMaps + properties: + configMapRef: + description: The ConfigMap to select from + properties: + name: + default: "" + 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.' + type: string + optional: + description: Specify whether the ConfigMap must + be defined + type: boolean + type: object + x-kubernetes-map-type: atomic + prefix: + description: An optional identifier to prepend to + each key in the ConfigMap. Must be a C_IDENTIFIER. + type: string + secretRef: + description: The Secret to select from + properties: + name: + default: "" + 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.' + type: string + optional: + description: Specify whether the Secret must + be defined + type: boolean + type: object + x-kubernetes-map-type: atomic + type: object + type: array + x-kubernetes-list-type: atomic + image: + description: 'Container image name. More info: https://kubernetes.io/docs/concepts/containers/images + This field is optional to allow higher level config + management to default or override container images in + workload controllers like Deployments and StatefulSets.' + type: string + imagePullPolicy: + description: 'Image pull policy. One of Always, Never, + IfNotPresent. Defaults to Always if :latest tag is specified, + or IfNotPresent otherwise. Cannot be updated. More info: + https://kubernetes.io/docs/concepts/containers/images#updating-images' + type: string + lifecycle: + description: Actions that the management system should + take in response to container lifecycle events. Cannot + be updated. + properties: + postStart: + description: 'PostStart is called immediately after + a container is created. If the handler fails, the + container is terminated and restarted according + to its restart policy. Other management of the container + blocks until the hook completes. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' + properties: + exec: + description: Exec specifies the action to take. + properties: + command: + description: Command is the command line to + execute inside the container, the working + directory for the command is root ('/') + in the container's filesystem. The command + is simply exec'd, it is not run inside a + shell, so traditional shell instructions + ('|', etc) won't work. To use a shell, you + need to explicitly call out to that shell. + Exit status of 0 is treated as live/healthy + and non-zero is unhealthy. + items: + type: string + type: array + x-kubernetes-list-type: atomic + type: object + httpGet: + description: HTTPGet specifies the http request + to perform. + properties: + host: + description: Host name to connect to, defaults + to the pod IP. You probably want to set + "Host" in httpHeaders instead. + type: string + httpHeaders: + description: Custom headers to set in the + request. HTTP allows repeated headers. + items: + description: HTTPHeader describes a custom + header to be used in HTTP probes + properties: + name: + description: The header field name. + This will be canonicalized upon output, + so case-variant names will be understood + as the same header. + type: string + value: + description: The header field value + type: string + required: + - name + - value + type: object + type: array + x-kubernetes-list-type: atomic + path: + description: Path to access on the HTTP server. + type: string + port: + anyOf: + - type: integer + - type: string + description: Name or number of the port to + access on the container. Number must be + in the range 1 to 65535. Name must be an + IANA_SVC_NAME. + x-kubernetes-int-or-string: true + scheme: + description: Scheme to use for connecting + to the host. Defaults to HTTP. + type: string + required: + - port + type: object + sleep: + description: Sleep represents the duration that + the container should sleep before being terminated. + properties: + seconds: + description: Seconds is the number of seconds + to sleep. + format: int64 + type: integer + required: + - seconds + type: object + tcpSocket: + description: Deprecated. TCPSocket is NOT supported + as a LifecycleHandler and kept for the backward + compatibility. There are no validation of this + field and lifecycle hooks will fail in runtime + when tcp handler is specified. + properties: + host: + description: 'Optional: Host name to connect + to, defaults to the pod IP.' + type: string + port: + anyOf: + - type: integer + - type: string + description: Number or name of the port to + access on the container. Number must be + in the range 1 to 65535. Name must be an + IANA_SVC_NAME. + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + preStop: + description: 'PreStop is called immediately before + a container is terminated due to an API request + or management event such as liveness/startup probe + failure, preemption, resource contention, etc. The + handler is not called if the container crashes or + exits. The Pod''s termination grace period countdown + begins before the PreStop hook is executed. Regardless + of the outcome of the handler, the container will + eventually terminate within the Pod''s termination + grace period (unless delayed by finalizers). Other + management of the container blocks until the hook + completes or until the termination grace period + is reached. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' + properties: + exec: + description: Exec specifies the action to take. + properties: + command: + description: Command is the command line to + execute inside the container, the working + directory for the command is root ('/') + in the container's filesystem. The command + is simply exec'd, it is not run inside a + shell, so traditional shell instructions + ('|', etc) won't work. To use a shell, you + need to explicitly call out to that shell. + Exit status of 0 is treated as live/healthy + and non-zero is unhealthy. + items: + type: string + type: array + x-kubernetes-list-type: atomic + type: object + httpGet: + description: HTTPGet specifies the http request + to perform. + properties: + host: + description: Host name to connect to, defaults + to the pod IP. You probably want to set + "Host" in httpHeaders instead. + type: string + httpHeaders: + description: Custom headers to set in the + request. HTTP allows repeated headers. + items: + description: HTTPHeader describes a custom + header to be used in HTTP probes + properties: + name: + description: The header field name. + This will be canonicalized upon output, + so case-variant names will be understood + as the same header. + type: string + value: + description: The header field value + type: string + required: + - name + - value + type: object + type: array + x-kubernetes-list-type: atomic + path: + description: Path to access on the HTTP server. + type: string + port: + anyOf: + - type: integer + - type: string + description: Name or number of the port to + access on the container. Number must be + in the range 1 to 65535. Name must be an + IANA_SVC_NAME. + x-kubernetes-int-or-string: true + scheme: + description: Scheme to use for connecting + to the host. Defaults to HTTP. + type: string + required: + - port + type: object + sleep: + description: Sleep represents the duration that + the container should sleep before being terminated. + properties: + seconds: + description: Seconds is the number of seconds + to sleep. + format: int64 + type: integer + required: + - seconds + type: object + tcpSocket: + description: Deprecated. TCPSocket is NOT supported + as a LifecycleHandler and kept for the backward + compatibility. There are no validation of this + field and lifecycle hooks will fail in runtime + when tcp handler is specified. + properties: + host: + description: 'Optional: Host name to connect + to, defaults to the pod IP.' + type: string + port: + anyOf: + - type: integer + - type: string + description: Number or name of the port to + access on the container. Number must be + in the range 1 to 65535. Name must be an + IANA_SVC_NAME. + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + type: object + livenessProbe: + description: 'Periodic probe of container liveness. Container + will be restarted if the probe fails. Cannot be updated. + More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' + properties: + exec: + description: Exec specifies the action to take. + properties: + command: + description: Command is the command line to execute + inside the container, the working directory + for the command is root ('/') in the container's + filesystem. The command is simply exec'd, it + is not run inside a shell, so traditional shell + instructions ('|', etc) won't work. To use a + shell, you need to explicitly call out to that + shell. Exit status of 0 is treated as live/healthy + and non-zero is unhealthy. + items: + type: string + type: array + x-kubernetes-list-type: atomic + type: object + failureThreshold: + description: Minimum consecutive failures for the + probe to be considered failed after having succeeded. + Defaults to 3. Minimum value is 1. + format: int32 + type: integer + grpc: + description: GRPC specifies an action involving a + GRPC port. + properties: + port: + description: Port number of the gRPC service. + Number must be in the range 1 to 65535. + format: int32 + type: integer + service: + description: "Service is the name of the service + to place in the gRPC HealthCheckRequest (see + https://github.com/grpc/grpc/blob/master/doc/health-checking.md). + \n If this is not specified, the default behavior + is defined by gRPC." + type: string + required: + - port + type: object + httpGet: + description: HTTPGet specifies the http request to + perform. + properties: + host: + description: Host name to connect to, defaults + to the pod IP. You probably want to set "Host" + in httpHeaders instead. + type: string + httpHeaders: + description: Custom headers to set in the request. + HTTP allows repeated headers. + items: + description: HTTPHeader describes a custom header + to be used in HTTP probes + properties: + name: + description: The header field name. This + will be canonicalized upon output, so + case-variant names will be understood + as the same header. + type: string + value: + description: The header field value + type: string + required: + - name + - value + type: object + type: array + x-kubernetes-list-type: atomic + path: + description: Path to access on the HTTP server. + type: string + port: + anyOf: + - type: integer + - type: string + description: Name or number of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. + x-kubernetes-int-or-string: true + scheme: + description: Scheme to use for connecting to the + host. Defaults to HTTP. + type: string + required: + - port + type: object + initialDelaySeconds: + description: 'Number of seconds after the container + has started before liveness probes are initiated. + More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' + format: int32 + type: integer + periodSeconds: + description: How often (in seconds) to perform the + probe. Default to 10 seconds. Minimum value is 1. + format: int32 + type: integer + successThreshold: + description: Minimum consecutive successes for the + probe to be considered successful after having failed. + Defaults to 1. Must be 1 for liveness and startup. + Minimum value is 1. + format: int32 + type: integer + tcpSocket: + description: TCPSocket specifies an action involving + a TCP port. + properties: + host: + description: 'Optional: Host name to connect to, + defaults to the pod IP.' + type: string + port: + anyOf: + - type: integer + - type: string + description: Number or name of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + description: Optional duration in seconds the pod + needs to terminate gracefully upon probe failure. + The grace period is the duration in seconds after + the processes running in the pod are sent a termination + signal and the time when the processes are forcibly + halted with a kill signal. Set this value longer + than the expected cleanup time for your process. + If this value is nil, the pod's terminationGracePeriodSeconds + will be used. Otherwise, this value overrides the + value provided by the pod spec. Value must be non-negative + integer. The value zero indicates stop immediately + via the kill signal (no opportunity to shut down). + This is a beta field and requires enabling ProbeTerminationGracePeriod + feature gate. Minimum value is 1. spec.terminationGracePeriodSeconds + is used if unset. + format: int64 + type: integer + timeoutSeconds: + description: 'Number of seconds after which the probe + times out. Defaults to 1 second. Minimum value is + 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' + format: int32 + type: integer + type: object + name: + description: Name of the container specified as a DNS_LABEL. + Each container in a pod must have a unique name (DNS_LABEL). + Cannot be updated. + type: string + ports: + description: List of ports to expose from the container. + Not specifying a port here DOES NOT prevent that port + from being exposed. Any port which is listening on the + default "0.0.0.0" address inside a container will be + accessible from the network. Modifying this array with + strategic merge patch may corrupt the data. For more + information See https://github.com/kubernetes/kubernetes/issues/108255. + Cannot be updated. + items: + description: ContainerPort represents a network port + in a single container. + properties: + containerPort: + description: Number of port to expose on the pod's + IP address. This must be a valid port number, + 0 < x < 65536. + format: int32 + type: integer + hostIP: + description: What host IP to bind the external port + to. + type: string + hostPort: + description: Number of port to expose on the host. + If specified, this must be a valid port number, + 0 < x < 65536. If HostNetwork is specified, this + must match ContainerPort. Most containers do not + need this. + format: int32 + type: integer + name: + description: If specified, this must be an IANA_SVC_NAME + and unique within the pod. Each named port in + a pod must have a unique name. Name for the port + that can be referred to by services. + type: string + protocol: + default: TCP + description: Protocol for port. Must be UDP, TCP, + or SCTP. Defaults to "TCP". + type: string + required: + - containerPort + type: object + type: array + x-kubernetes-list-map-keys: + - containerPort + - protocol + x-kubernetes-list-type: map + readinessProbe: + description: 'Periodic probe of container service readiness. + Container will be removed from service endpoints if + the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' + properties: + exec: + description: Exec specifies the action to take. + properties: + command: + description: Command is the command line to execute + inside the container, the working directory + for the command is root ('/') in the container's + filesystem. The command is simply exec'd, it + is not run inside a shell, so traditional shell + instructions ('|', etc) won't work. To use a + shell, you need to explicitly call out to that + shell. Exit status of 0 is treated as live/healthy + and non-zero is unhealthy. + items: + type: string + type: array + x-kubernetes-list-type: atomic + type: object + failureThreshold: + description: Minimum consecutive failures for the + probe to be considered failed after having succeeded. + Defaults to 3. Minimum value is 1. + format: int32 + type: integer + grpc: + description: GRPC specifies an action involving a + GRPC port. + properties: + port: + description: Port number of the gRPC service. + Number must be in the range 1 to 65535. + format: int32 + type: integer + service: + description: "Service is the name of the service + to place in the gRPC HealthCheckRequest (see + https://github.com/grpc/grpc/blob/master/doc/health-checking.md). + \n If this is not specified, the default behavior + is defined by gRPC." + type: string + required: + - port + type: object + httpGet: + description: HTTPGet specifies the http request to + perform. + properties: + host: + description: Host name to connect to, defaults + to the pod IP. You probably want to set "Host" + in httpHeaders instead. + type: string + httpHeaders: + description: Custom headers to set in the request. + HTTP allows repeated headers. + items: + description: HTTPHeader describes a custom header + to be used in HTTP probes + properties: + name: + description: The header field name. This + will be canonicalized upon output, so + case-variant names will be understood + as the same header. + type: string + value: + description: The header field value + type: string + required: + - name + - value + type: object + type: array + x-kubernetes-list-type: atomic + path: + description: Path to access on the HTTP server. + type: string + port: + anyOf: + - type: integer + - type: string + description: Name or number of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. + x-kubernetes-int-or-string: true + scheme: + description: Scheme to use for connecting to the + host. Defaults to HTTP. + type: string + required: + - port + type: object + initialDelaySeconds: + description: 'Number of seconds after the container + has started before liveness probes are initiated. + More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' + format: int32 + type: integer + periodSeconds: + description: How often (in seconds) to perform the + probe. Default to 10 seconds. Minimum value is 1. + format: int32 + type: integer + successThreshold: + description: Minimum consecutive successes for the + probe to be considered successful after having failed. + Defaults to 1. Must be 1 for liveness and startup. + Minimum value is 1. + format: int32 + type: integer + tcpSocket: + description: TCPSocket specifies an action involving + a TCP port. + properties: + host: + description: 'Optional: Host name to connect to, + defaults to the pod IP.' + type: string + port: + anyOf: + - type: integer + - type: string + description: Number or name of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + description: Optional duration in seconds the pod + needs to terminate gracefully upon probe failure. + The grace period is the duration in seconds after + the processes running in the pod are sent a termination + signal and the time when the processes are forcibly + halted with a kill signal. Set this value longer + than the expected cleanup time for your process. + If this value is nil, the pod's terminationGracePeriodSeconds + will be used. Otherwise, this value overrides the + value provided by the pod spec. Value must be non-negative + integer. The value zero indicates stop immediately + via the kill signal (no opportunity to shut down). + This is a beta field and requires enabling ProbeTerminationGracePeriod + feature gate. Minimum value is 1. spec.terminationGracePeriodSeconds + is used if unset. + format: int64 + type: integer + timeoutSeconds: + description: 'Number of seconds after which the probe + times out. Defaults to 1 second. Minimum value is + 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' + format: int32 + type: integer + type: object + resizePolicy: + description: Resources resize policy for the container. + items: + description: ContainerResizePolicy represents resource + resize policy for the container. + properties: + resourceName: + description: 'Name of the resource to which this + resource resize policy applies. Supported values: + cpu, memory.' + type: string + restartPolicy: + description: Restart policy to apply when specified + resource is resized. If not specified, it defaults + to NotRequired. + type: string + required: + - resourceName + - restartPolicy + type: object + type: array + x-kubernetes-list-type: atomic + resources: + description: 'Compute Resources required by this container. + Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' + properties: + claims: + 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." + items: + description: ResourceClaim references one entry + in PodSpec.ResourceClaims. + properties: + name: + 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. + type: string + required: + - name + type: object + type: array + x-kubernetes-list-map-keys: + - name + x-kubernetes-list-type: map + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + description: 'Limits describes the maximum amount + of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + description: 'Requests describes the minimum amount + of compute resources required. If Requests is omitted + for a container, it defaults to Limits if that is + explicitly specified, otherwise to an implementation-defined + value. Requests cannot exceed Limits. More info: + https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' + type: object + type: object + restartPolicy: + 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.' + type: string + securityContext: + description: 'SecurityContext defines the security options + the container should be run with. If set, the fields + of SecurityContext override the equivalent fields of + PodSecurityContext. More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/' + properties: + allowPrivilegeEscalation: + description: 'AllowPrivilegeEscalation controls whether + a process can gain more privileges than its parent + process. This bool directly controls if the no_new_privs + flag will be set on the container process. AllowPrivilegeEscalation + is true always when the container is: 1) run as + Privileged 2) has CAP_SYS_ADMIN Note that this field + cannot be set when spec.os.name is windows.' + type: boolean + appArmorProfile: + 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. + properties: + localhostProfile: + 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". + type: string + type: + 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.' + type: string + required: + - type + type: object + capabilities: + description: The capabilities to add/drop when running + containers. Defaults to the default set of capabilities + granted by the container runtime. Note that this + field cannot be set when spec.os.name is windows. + properties: + add: + description: Added capabilities + items: + description: Capability represent POSIX capabilities + type + type: string + type: array + x-kubernetes-list-type: atomic + drop: + description: Removed capabilities + items: + description: Capability represent POSIX capabilities + type + type: string + type: array + x-kubernetes-list-type: atomic + type: object + privileged: + description: Run container in privileged mode. Processes + in privileged containers are essentially equivalent + to root on the host. Defaults to false. Note that + this field cannot be set when spec.os.name is windows. + type: boolean + procMount: + description: procMount denotes the type of proc mount + to use for the containers. The default is DefaultProcMount + which uses the container runtime defaults for readonly + paths and masked paths. This requires the ProcMountType + feature flag to be enabled. Note that this field + cannot be set when spec.os.name is windows. + type: string + readOnlyRootFilesystem: + description: Whether this container has a read-only + root filesystem. Default is false. Note that this + field cannot be set when spec.os.name is windows. + type: boolean + runAsGroup: + description: The GID to run the entrypoint of the + container process. Uses runtime default if unset. + May also be set in PodSecurityContext. If set in + both SecurityContext and PodSecurityContext, the + value specified in SecurityContext takes precedence. + Note that this field cannot be set when spec.os.name + is windows. + format: int64 + type: integer + runAsNonRoot: + description: Indicates that the container must run + as a non-root user. If true, the Kubelet will validate + the image at runtime to ensure that it does not + run as UID 0 (root) and fail to start the container + if it does. If unset or false, no such validation + will be performed. May also be set in PodSecurityContext. If + set in both SecurityContext and PodSecurityContext, + the value specified in SecurityContext takes precedence. + type: boolean + runAsUser: + description: The UID to run the entrypoint of the + container process. Defaults to user specified in + image metadata if unspecified. May also be set in + PodSecurityContext. If set in both SecurityContext + and PodSecurityContext, the value specified in SecurityContext + takes precedence. Note that this field cannot be + set when spec.os.name is windows. + format: int64 + type: integer + seLinuxOptions: + description: The SELinux context to be applied to + the container. If unspecified, the container runtime + will allocate a random SELinux context for each + container. May also be set in PodSecurityContext. If + set in both SecurityContext and PodSecurityContext, + the value specified in SecurityContext takes precedence. + Note that this field cannot be set when spec.os.name + is windows. + properties: + level: + description: Level is SELinux level label that + applies to the container. + type: string + role: + description: Role is a SELinux role label that + applies to the container. + type: string + type: + description: Type is a SELinux type label that + applies to the container. + type: string + user: + description: User is a SELinux user label that + applies to the container. + type: string + type: object + seccompProfile: + description: The seccomp options to use by this container. + If seccomp options are provided at both the pod + & container level, the container options override + the pod options. Note that this field cannot be + set when spec.os.name is windows. + properties: + localhostProfile: + description: localhostProfile indicates a profile + defined in a file on the node should be used. + The profile must be preconfigured on the node + to work. Must be a descending path, relative + to the kubelet's configured seccomp profile + location. Must be set if type is "Localhost". + Must NOT be set for any other type. + type: string + type: + description: "type indicates which kind of seccomp + profile will be applied. Valid options are: + \n Localhost - a profile defined in a file on + the node should be used. RuntimeDefault - the + container runtime default profile should be + used. Unconfined - no profile should be applied." + type: string + required: + - type + type: object + windowsOptions: + description: The Windows specific settings applied + to all containers. If unspecified, the options from + the PodSecurityContext will be used. If set in both + SecurityContext and PodSecurityContext, the value + specified in SecurityContext takes precedence. Note + that this field cannot be set when spec.os.name + is linux. + properties: + gmsaCredentialSpec: + description: GMSACredentialSpec is where the GMSA + admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) + inlines the contents of the GMSA credential + spec named by the GMSACredentialSpecName field. + type: string + gmsaCredentialSpecName: + description: GMSACredentialSpecName is the name + of the GMSA credential spec to use. + type: string + hostProcess: + description: HostProcess determines if a container + should be run as a 'Host Process' container. + All of a Pod's containers must have the same + effective HostProcess value (it is not allowed + to have a mix of HostProcess containers and + non-HostProcess containers). In addition, if + HostProcess is true then HostNetwork must also + be set to true. + type: boolean + runAsUserName: + description: The UserName in Windows to run the + entrypoint of the container process. Defaults + to the user specified in image metadata if unspecified. + May also be set in PodSecurityContext. If set + in both SecurityContext and PodSecurityContext, + the value specified in SecurityContext takes + precedence. + type: string + type: object + type: object + startupProbe: + description: 'StartupProbe indicates that the Pod has + successfully initialized. If specified, no other probes + are executed until this completes successfully. If this + probe fails, the Pod will be restarted, just as if the + livenessProbe failed. This can be used to provide different + probe parameters at the beginning of a Pod''s lifecycle, + when it might take a long time to load data or warm + a cache, than during steady-state operation. This cannot + be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' + properties: + exec: + description: Exec specifies the action to take. + properties: + command: + description: Command is the command line to execute + inside the container, the working directory + for the command is root ('/') in the container's + filesystem. The command is simply exec'd, it + is not run inside a shell, so traditional shell + instructions ('|', etc) won't work. To use a + shell, you need to explicitly call out to that + shell. Exit status of 0 is treated as live/healthy + and non-zero is unhealthy. + items: + type: string + type: array + x-kubernetes-list-type: atomic + type: object + failureThreshold: + description: Minimum consecutive failures for the + probe to be considered failed after having succeeded. + Defaults to 3. Minimum value is 1. + format: int32 + type: integer + grpc: + description: GRPC specifies an action involving a + GRPC port. + properties: + port: + description: Port number of the gRPC service. + Number must be in the range 1 to 65535. + format: int32 + type: integer + service: + description: "Service is the name of the service + to place in the gRPC HealthCheckRequest (see + https://github.com/grpc/grpc/blob/master/doc/health-checking.md). + \n If this is not specified, the default behavior + is defined by gRPC." + type: string + required: + - port + type: object + httpGet: + description: HTTPGet specifies the http request to + perform. + properties: + host: + description: Host name to connect to, defaults + to the pod IP. You probably want to set "Host" + in httpHeaders instead. + type: string + httpHeaders: + description: Custom headers to set in the request. + HTTP allows repeated headers. + items: + description: HTTPHeader describes a custom header + to be used in HTTP probes + properties: + name: + description: The header field name. This + will be canonicalized upon output, so + case-variant names will be understood + as the same header. + type: string + value: + description: The header field value + type: string + required: + - name + - value + type: object + type: array + x-kubernetes-list-type: atomic + path: + description: Path to access on the HTTP server. + type: string + port: + anyOf: + - type: integer + - type: string + description: Name or number of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. + x-kubernetes-int-or-string: true + scheme: + description: Scheme to use for connecting to the + host. Defaults to HTTP. + type: string + required: + - port + type: object + initialDelaySeconds: + description: 'Number of seconds after the container + has started before liveness probes are initiated. + More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' + format: int32 + type: integer + periodSeconds: + description: How often (in seconds) to perform the + probe. Default to 10 seconds. Minimum value is 1. + format: int32 + type: integer + successThreshold: + description: Minimum consecutive successes for the + probe to be considered successful after having failed. + Defaults to 1. Must be 1 for liveness and startup. + Minimum value is 1. + format: int32 + type: integer + tcpSocket: + description: TCPSocket specifies an action involving + a TCP port. + properties: + host: + description: 'Optional: Host name to connect to, + defaults to the pod IP.' + type: string + port: + anyOf: + - type: integer + - type: string + description: Number or name of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + description: Optional duration in seconds the pod + needs to terminate gracefully upon probe failure. + The grace period is the duration in seconds after + the processes running in the pod are sent a termination + signal and the time when the processes are forcibly + halted with a kill signal. Set this value longer + than the expected cleanup time for your process. + If this value is nil, the pod's terminationGracePeriodSeconds + will be used. Otherwise, this value overrides the + value provided by the pod spec. Value must be non-negative + integer. The value zero indicates stop immediately + via the kill signal (no opportunity to shut down). + This is a beta field and requires enabling ProbeTerminationGracePeriod + feature gate. Minimum value is 1. spec.terminationGracePeriodSeconds + is used if unset. + format: int64 + type: integer + timeoutSeconds: + description: 'Number of seconds after which the probe + times out. Defaults to 1 second. Minimum value is + 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' + format: int32 + type: integer + type: object + stdin: + description: Whether this container should allocate a + buffer for stdin in the container runtime. If this is + not set, reads from stdin in the container will always + result in EOF. Default is false. + type: boolean + stdinOnce: + description: Whether the container runtime should close + the stdin channel after it has been opened by a single + attach. When stdin is true the stdin stream will remain + open across multiple attach sessions. If stdinOnce is + set to true, stdin is opened on container start, is + empty until the first client attaches to stdin, and + then remains open and accepts data until the client + disconnects, at which time stdin is closed and remains + closed until the container is restarted. If this flag + is false, a container processes that reads from stdin + will never receive an EOF. Default is false + type: boolean + terminationMessagePath: + description: 'Optional: Path at which the file to which + the container''s termination message will be written + is mounted into the container''s filesystem. Message + written is intended to be brief final status, such as + an assertion failure message. Will be truncated by the + node if greater than 4096 bytes. The total message length + across all containers will be limited to 12kb. Defaults + to /dev/termination-log. Cannot be updated.' + type: string + terminationMessagePolicy: + description: Indicate how the termination message should + be populated. File will use the contents of terminationMessagePath + to populate the container status message on both success + and failure. FallbackToLogsOnError will use the last + chunk of container log output if the termination message + file is empty and the container exited with an error. + The log output is limited to 2048 bytes or 80 lines, + whichever is smaller. Defaults to File. Cannot be updated. + type: string + tty: + description: Whether this container should allocate a + TTY for itself, also requires 'stdin' to be true. Default + is false. + type: boolean + volumeDevices: + description: volumeDevices is the list of block devices + to be used by the container. + items: + description: volumeDevice describes a mapping of a raw + block device within a container. + properties: + devicePath: + description: devicePath is the path inside of the + container that the device will be mapped to. + type: string + name: + description: name must match the name of a persistentVolumeClaim + in the pod + type: string + required: + - devicePath + - name + type: object + type: array + x-kubernetes-list-map-keys: + - devicePath + x-kubernetes-list-type: map + volumeMounts: + description: Pod volumes to mount into the container's + filesystem. Cannot be updated. + items: + description: VolumeMount describes a mounting of a Volume + within a container. + properties: + mountPath: + description: Path within the container at which + the volume should be mounted. Must not contain + ':'. + type: string + mountPropagation: + description: mountPropagation determines how mounts + are propagated from the host to container and + the other way around. When not set, MountPropagationNone + is used. This field is beta in 1.10. When RecursiveReadOnly + is set to IfPossible or to Enabled, MountPropagation + must be None or unspecified (which defaults to + None). + type: string + name: + description: This must match the Name of a Volume. + type: string + readOnly: + description: Mounted read-only if true, read-write + otherwise (false or unspecified). Defaults to + false. + type: boolean + recursiveReadOnly: + description: "RecursiveReadOnly specifies whether + read-only mounts should be handled recursively. + \n If ReadOnly is false, this field has no meaning + and must be unspecified. \n If ReadOnly is true, + and this field is set to Disabled, the mount is + not made recursively read-only. If this field + is set to IfPossible, the mount is made recursively + read-only, if it is supported by the container + runtime. If this field is set to Enabled, the + mount is made recursively read-only if it is supported + by the container runtime, otherwise the pod will + not be started and an error will be generated + to indicate the reason. \n If this field is set + to IfPossible or Enabled, MountPropagation must + be set to None (or be unspecified, which defaults + to None). \n If this field is not specified, it + is treated as an equivalent of Disabled." + type: string + subPath: + description: Path within the volume from which the + container's volume should be mounted. Defaults + to "" (volume's root). + type: string + subPathExpr: + description: Expanded path within the volume from + which the container's volume should be mounted. + Behaves similarly to SubPath but environment variable + references $(VAR_NAME) are expanded using the + container's environment. Defaults to "" (volume's + root). SubPathExpr and SubPath are mutually exclusive. + type: string + required: + - mountPath + - name + type: object + type: array + x-kubernetes-list-map-keys: + - mountPath + x-kubernetes-list-type: map + workingDir: + description: Container's working directory. If not specified, + the container runtime's default will be used, which + might be configured in the container image. Cannot be + updated. + type: string + required: + - name + type: object + type: array + x-kubernetes-list-map-keys: + - name + x-kubernetes-list-type: map + dnsConfig: + description: Specifies the DNS parameters of a pod. Parameters + specified here will be merged to the generated DNS configuration + based on DNSPolicy. + properties: + nameservers: + description: A list of DNS name server IP addresses. This + will be appended to the base nameservers generated from + DNSPolicy. Duplicated nameservers will be removed. + items: + type: string + type: array + x-kubernetes-list-type: atomic + options: + description: A list of DNS resolver options. This will be + merged with the base options generated from DNSPolicy. + Duplicated entries will be removed. Resolution options + given in Options will override those that appear in the + base DNSPolicy. + items: + description: PodDNSConfigOption defines DNS resolver options + of a pod. + properties: + name: + description: Required. + type: string + value: + type: string + type: object + type: array + x-kubernetes-list-type: atomic + searches: + description: A list of DNS search domains for host-name + lookup. This will be appended to the base search paths + generated from DNSPolicy. Duplicated search paths will + be removed. + items: + type: string + type: array + x-kubernetes-list-type: atomic + type: object + dnsPolicy: + description: Set DNS policy for the pod. Defaults to "ClusterFirst". + Valid values are 'ClusterFirstWithHostNet', 'ClusterFirst', + 'Default' or 'None'. DNS parameters given in DNSConfig will + be merged with the policy selected with DNSPolicy. To have + DNS options set along with hostNetwork, you have to specify + DNS policy explicitly to 'ClusterFirstWithHostNet'. + type: string + enableServiceLinks: + description: 'EnableServiceLinks indicates whether information + about services should be injected into pod''s environment + variables, matching the syntax of Docker links. Optional: + Defaults to true.' + type: boolean + ephemeralContainers: + description: List of ephemeral containers run in this pod. Ephemeral + containers may be run in an existing pod to perform user-initiated + actions such as debugging. This list cannot be specified when + creating a pod, and it cannot be modified by updating the + pod spec. In order to add an ephemeral container to an existing + pod, use the pod's ephemeralcontainers subresource. + items: + description: "An EphemeralContainer is a temporary container + that you may add to an existing Pod for user-initiated activities + such as debugging. Ephemeral containers have no resource + or scheduling guarantees, and they will not be restarted + when they exit or when a Pod is removed or restarted. The + kubelet may evict a Pod if an ephemeral container causes + the Pod to exceed its resource allocation. \n To add an + ephemeral container, use the ephemeralcontainers subresource + of an existing Pod. Ephemeral containers may not be removed + or restarted." + properties: + args: + description: 'Arguments to the entrypoint. The image''s + CMD is used if this is not provided. Variable references + $(VAR_NAME) are expanded using the container''s environment. + If a variable cannot be resolved, the reference in the + input string will be unchanged. Double $$ are reduced + to a single $, which allows for escaping the $(VAR_NAME) + syntax: i.e. "$$(VAR_NAME)" will produce the string + literal "$(VAR_NAME)". Escaped references will never + be expanded, regardless of whether the variable exists + or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' + items: + type: string + type: array + x-kubernetes-list-type: atomic + command: + description: 'Entrypoint array. Not executed within a + shell. The image''s ENTRYPOINT is used if this is not + provided. Variable references $(VAR_NAME) are expanded + using the container''s environment. If a variable cannot + be resolved, the reference in the input string will + be unchanged. Double $$ are reduced to a single $, which + allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" + will produce the string literal "$(VAR_NAME)". Escaped + references will never be expanded, regardless of whether + the variable exists or not. Cannot be updated. More + info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' + items: + type: string + type: array + x-kubernetes-list-type: atomic + env: + description: List of environment variables to set in the + container. Cannot be updated. + items: + description: EnvVar represents an environment variable + present in a Container. + properties: + name: + description: Name of the environment variable. Must + be a C_IDENTIFIER. + type: string + value: + description: 'Variable references $(VAR_NAME) are + expanded using the previously defined environment + variables in the container and any service environment + variables. If a variable cannot be resolved, the + reference in the input string will be unchanged. + Double $$ are reduced to a single $, which allows + for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" + will produce the string literal "$(VAR_NAME)". + Escaped references will never be expanded, regardless + of whether the variable exists or not. Defaults + to "".' + type: string + valueFrom: + description: Source for the environment variable's + value. Cannot be used if value is not empty. + properties: + configMapKeyRef: + description: Selects a key of a ConfigMap. + properties: + key: + description: The key to select. + type: string + name: + default: "" + 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.' + type: string + optional: + description: Specify whether the ConfigMap + or its key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + fieldRef: + description: 'Selects a field of the pod: supports + metadata.name, metadata.namespace, `metadata.labels['''']`, + `metadata.annotations['''']`, spec.nodeName, + spec.serviceAccountName, status.hostIP, status.podIP, + status.podIPs.' + properties: + apiVersion: + description: Version of the schema the FieldPath + is written in terms of, defaults to "v1". + type: string + fieldPath: + description: Path of the field to select + in the specified API version. + type: string + required: + - fieldPath + type: object + x-kubernetes-map-type: atomic + resourceFieldRef: + description: 'Selects a resource of the container: + only resources limits and requests (limits.cpu, + limits.memory, limits.ephemeral-storage, requests.cpu, + requests.memory and requests.ephemeral-storage) + are currently supported.' + properties: + containerName: + description: 'Container name: required for + volumes, optional for env vars' + type: string + divisor: + anyOf: + - type: integer + - type: string + description: Specifies the output format + of the exposed resources, defaults to + "1" + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + description: 'Required: resource to select' + type: string + required: + - resource + type: object + x-kubernetes-map-type: atomic + secretKeyRef: + description: Selects a key of a secret in the + pod's namespace + properties: + key: + description: The key of the secret to select + from. Must be a valid secret key. + type: string + name: + default: "" + 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.' + type: string + optional: + description: Specify whether the Secret + or its key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + type: object + required: + - name + type: object + type: array + x-kubernetes-list-map-keys: + - name + x-kubernetes-list-type: map + envFrom: + description: List of sources to populate environment variables + in the container. The keys defined within a source must + be a C_IDENTIFIER. All invalid keys will be reported + as an event when the container is starting. When a key + exists in multiple sources, the value associated with + the last source will take precedence. Values defined + by an Env with a duplicate key will take precedence. + Cannot be updated. + items: + description: EnvFromSource represents the source of + a set of ConfigMaps + properties: + configMapRef: + description: The ConfigMap to select from + properties: + name: + default: "" + 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.' + type: string + optional: + description: Specify whether the ConfigMap must + be defined + type: boolean + type: object + x-kubernetes-map-type: atomic + prefix: + description: An optional identifier to prepend to + each key in the ConfigMap. Must be a C_IDENTIFIER. + type: string + secretRef: + description: The Secret to select from + properties: + name: + default: "" + 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.' + type: string + optional: + description: Specify whether the Secret must + be defined + type: boolean + type: object + x-kubernetes-map-type: atomic + type: object + type: array + x-kubernetes-list-type: atomic + image: + description: 'Container image name. More info: https://kubernetes.io/docs/concepts/containers/images' + type: string + imagePullPolicy: + description: 'Image pull policy. One of Always, Never, + IfNotPresent. Defaults to Always if :latest tag is specified, + or IfNotPresent otherwise. Cannot be updated. More info: + https://kubernetes.io/docs/concepts/containers/images#updating-images' + type: string + lifecycle: + description: Lifecycle is not allowed for ephemeral containers. + properties: + postStart: + description: 'PostStart is called immediately after + a container is created. If the handler fails, the + container is terminated and restarted according + to its restart policy. Other management of the container + blocks until the hook completes. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' + properties: + exec: + description: Exec specifies the action to take. + properties: + command: + description: Command is the command line to + execute inside the container, the working + directory for the command is root ('/') + in the container's filesystem. The command + is simply exec'd, it is not run inside a + shell, so traditional shell instructions + ('|', etc) won't work. To use a shell, you + need to explicitly call out to that shell. + Exit status of 0 is treated as live/healthy + and non-zero is unhealthy. + items: + type: string + type: array + x-kubernetes-list-type: atomic + type: object + httpGet: + description: HTTPGet specifies the http request + to perform. + properties: + host: + description: Host name to connect to, defaults + to the pod IP. You probably want to set + "Host" in httpHeaders instead. + type: string + httpHeaders: + description: Custom headers to set in the + request. HTTP allows repeated headers. + items: + description: HTTPHeader describes a custom + header to be used in HTTP probes + properties: + name: + description: The header field name. + This will be canonicalized upon output, + so case-variant names will be understood + as the same header. + type: string + value: + description: The header field value + type: string + required: + - name + - value + type: object + type: array + x-kubernetes-list-type: atomic + path: + description: Path to access on the HTTP server. + type: string + port: + anyOf: + - type: integer + - type: string + description: Name or number of the port to + access on the container. Number must be + in the range 1 to 65535. Name must be an + IANA_SVC_NAME. + x-kubernetes-int-or-string: true + scheme: + description: Scheme to use for connecting + to the host. Defaults to HTTP. + type: string + required: + - port + type: object + sleep: + description: Sleep represents the duration that + the container should sleep before being terminated. + properties: + seconds: + description: Seconds is the number of seconds + to sleep. + format: int64 + type: integer + required: + - seconds + type: object + tcpSocket: + description: Deprecated. TCPSocket is NOT supported + as a LifecycleHandler and kept for the backward + compatibility. There are no validation of this + field and lifecycle hooks will fail in runtime + when tcp handler is specified. + properties: + host: + description: 'Optional: Host name to connect + to, defaults to the pod IP.' + type: string + port: + anyOf: + - type: integer + - type: string + description: Number or name of the port to + access on the container. Number must be + in the range 1 to 65535. Name must be an + IANA_SVC_NAME. + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + preStop: + description: 'PreStop is called immediately before + a container is terminated due to an API request + or management event such as liveness/startup probe + failure, preemption, resource contention, etc. The + handler is not called if the container crashes or + exits. The Pod''s termination grace period countdown + begins before the PreStop hook is executed. Regardless + of the outcome of the handler, the container will + eventually terminate within the Pod''s termination + grace period (unless delayed by finalizers). Other + management of the container blocks until the hook + completes or until the termination grace period + is reached. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' + properties: + exec: + description: Exec specifies the action to take. + properties: + command: + description: Command is the command line to + execute inside the container, the working + directory for the command is root ('/') + in the container's filesystem. The command + is simply exec'd, it is not run inside a + shell, so traditional shell instructions + ('|', etc) won't work. To use a shell, you + need to explicitly call out to that shell. + Exit status of 0 is treated as live/healthy + and non-zero is unhealthy. + items: + type: string + type: array + x-kubernetes-list-type: atomic + type: object + httpGet: + description: HTTPGet specifies the http request + to perform. + properties: + host: + description: Host name to connect to, defaults + to the pod IP. You probably want to set + "Host" in httpHeaders instead. + type: string + httpHeaders: + description: Custom headers to set in the + request. HTTP allows repeated headers. + items: + description: HTTPHeader describes a custom + header to be used in HTTP probes + properties: + name: + description: The header field name. + This will be canonicalized upon output, + so case-variant names will be understood + as the same header. + type: string + value: + description: The header field value + type: string + required: + - name + - value + type: object + type: array + x-kubernetes-list-type: atomic + path: + description: Path to access on the HTTP server. + type: string + port: + anyOf: + - type: integer + - type: string + description: Name or number of the port to + access on the container. Number must be + in the range 1 to 65535. Name must be an + IANA_SVC_NAME. + x-kubernetes-int-or-string: true + scheme: + description: Scheme to use for connecting + to the host. Defaults to HTTP. + type: string + required: + - port + type: object + sleep: + description: Sleep represents the duration that + the container should sleep before being terminated. + properties: + seconds: + description: Seconds is the number of seconds + to sleep. + format: int64 + type: integer + required: + - seconds + type: object + tcpSocket: + description: Deprecated. TCPSocket is NOT supported + as a LifecycleHandler and kept for the backward + compatibility. There are no validation of this + field and lifecycle hooks will fail in runtime + when tcp handler is specified. + properties: + host: + description: 'Optional: Host name to connect + to, defaults to the pod IP.' + type: string + port: + anyOf: + - type: integer + - type: string + description: Number or name of the port to + access on the container. Number must be + in the range 1 to 65535. Name must be an + IANA_SVC_NAME. + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + type: object + livenessProbe: + description: Probes are not allowed for ephemeral containers. + properties: + exec: + description: Exec specifies the action to take. + properties: + command: + description: Command is the command line to execute + inside the container, the working directory + for the command is root ('/') in the container's + filesystem. The command is simply exec'd, it + is not run inside a shell, so traditional shell + instructions ('|', etc) won't work. To use a + shell, you need to explicitly call out to that + shell. Exit status of 0 is treated as live/healthy + and non-zero is unhealthy. + items: + type: string + type: array + x-kubernetes-list-type: atomic + type: object + failureThreshold: + description: Minimum consecutive failures for the + probe to be considered failed after having succeeded. + Defaults to 3. Minimum value is 1. + format: int32 + type: integer + grpc: + description: GRPC specifies an action involving a + GRPC port. + properties: + port: + description: Port number of the gRPC service. + Number must be in the range 1 to 65535. + format: int32 + type: integer + service: + description: "Service is the name of the service + to place in the gRPC HealthCheckRequest (see + https://github.com/grpc/grpc/blob/master/doc/health-checking.md). + \n If this is not specified, the default behavior + is defined by gRPC." + type: string + required: + - port + type: object + httpGet: + description: HTTPGet specifies the http request to + perform. + properties: + host: + description: Host name to connect to, defaults + to the pod IP. You probably want to set "Host" + in httpHeaders instead. + type: string + httpHeaders: + description: Custom headers to set in the request. + HTTP allows repeated headers. + items: + description: HTTPHeader describes a custom header + to be used in HTTP probes + properties: + name: + description: The header field name. This + will be canonicalized upon output, so + case-variant names will be understood + as the same header. + type: string + value: + description: The header field value + type: string + required: + - name + - value + type: object + type: array + x-kubernetes-list-type: atomic + path: + description: Path to access on the HTTP server. + type: string + port: + anyOf: + - type: integer + - type: string + description: Name or number of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. + x-kubernetes-int-or-string: true + scheme: + description: Scheme to use for connecting to the + host. Defaults to HTTP. + type: string + required: + - port + type: object + initialDelaySeconds: + description: 'Number of seconds after the container + has started before liveness probes are initiated. + More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' + format: int32 + type: integer + periodSeconds: + description: How often (in seconds) to perform the + probe. Default to 10 seconds. Minimum value is 1. + format: int32 + type: integer + successThreshold: + description: Minimum consecutive successes for the + probe to be considered successful after having failed. + Defaults to 1. Must be 1 for liveness and startup. + Minimum value is 1. + format: int32 + type: integer + tcpSocket: + description: TCPSocket specifies an action involving + a TCP port. + properties: + host: + description: 'Optional: Host name to connect to, + defaults to the pod IP.' + type: string + port: + anyOf: + - type: integer + - type: string + description: Number or name of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + description: Optional duration in seconds the pod + needs to terminate gracefully upon probe failure. + The grace period is the duration in seconds after + the processes running in the pod are sent a termination + signal and the time when the processes are forcibly + halted with a kill signal. Set this value longer + than the expected cleanup time for your process. + If this value is nil, the pod's terminationGracePeriodSeconds + will be used. Otherwise, this value overrides the + value provided by the pod spec. Value must be non-negative + integer. The value zero indicates stop immediately + via the kill signal (no opportunity to shut down). + This is a beta field and requires enabling ProbeTerminationGracePeriod + feature gate. Minimum value is 1. spec.terminationGracePeriodSeconds + is used if unset. + format: int64 + type: integer + timeoutSeconds: + description: 'Number of seconds after which the probe + times out. Defaults to 1 second. Minimum value is + 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' + format: int32 + type: integer + type: object + name: + description: Name of the ephemeral container specified + as a DNS_LABEL. This name must be unique among all containers, + init containers and ephemeral containers. + type: string + ports: + description: Ports are not allowed for ephemeral containers. + items: + description: ContainerPort represents a network port + in a single container. + properties: + containerPort: + description: Number of port to expose on the pod's + IP address. This must be a valid port number, + 0 < x < 65536. + format: int32 + type: integer + hostIP: + description: What host IP to bind the external port + to. + type: string + hostPort: + description: Number of port to expose on the host. + If specified, this must be a valid port number, + 0 < x < 65536. If HostNetwork is specified, this + must match ContainerPort. Most containers do not + need this. + format: int32 + type: integer + name: + description: If specified, this must be an IANA_SVC_NAME + and unique within the pod. Each named port in + a pod must have a unique name. Name for the port + that can be referred to by services. + type: string + protocol: + default: TCP + description: Protocol for port. Must be UDP, TCP, + or SCTP. Defaults to "TCP". + type: string + required: + - containerPort + type: object + type: array + x-kubernetes-list-map-keys: + - containerPort + - protocol + x-kubernetes-list-type: map + readinessProbe: + description: Probes are not allowed for ephemeral containers. + properties: + exec: + description: Exec specifies the action to take. + properties: + command: + description: Command is the command line to execute + inside the container, the working directory + for the command is root ('/') in the container's + filesystem. The command is simply exec'd, it + is not run inside a shell, so traditional shell + instructions ('|', etc) won't work. To use a + shell, you need to explicitly call out to that + shell. Exit status of 0 is treated as live/healthy + and non-zero is unhealthy. + items: + type: string + type: array + x-kubernetes-list-type: atomic + type: object + failureThreshold: + description: Minimum consecutive failures for the + probe to be considered failed after having succeeded. + Defaults to 3. Minimum value is 1. + format: int32 + type: integer + grpc: + description: GRPC specifies an action involving a + GRPC port. + properties: + port: + description: Port number of the gRPC service. + Number must be in the range 1 to 65535. + format: int32 + type: integer + service: + description: "Service is the name of the service + to place in the gRPC HealthCheckRequest (see + https://github.com/grpc/grpc/blob/master/doc/health-checking.md). + \n If this is not specified, the default behavior + is defined by gRPC." + type: string + required: + - port + type: object + httpGet: + description: HTTPGet specifies the http request to + perform. + properties: + host: + description: Host name to connect to, defaults + to the pod IP. You probably want to set "Host" + in httpHeaders instead. + type: string + httpHeaders: + description: Custom headers to set in the request. + HTTP allows repeated headers. + items: + description: HTTPHeader describes a custom header + to be used in HTTP probes + properties: + name: + description: The header field name. This + will be canonicalized upon output, so + case-variant names will be understood + as the same header. + type: string + value: + description: The header field value + type: string + required: + - name + - value + type: object + type: array + x-kubernetes-list-type: atomic + path: + description: Path to access on the HTTP server. + type: string + port: + anyOf: + - type: integer + - type: string + description: Name or number of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. + x-kubernetes-int-or-string: true + scheme: + description: Scheme to use for connecting to the + host. Defaults to HTTP. + type: string + required: + - port + type: object + initialDelaySeconds: + description: 'Number of seconds after the container + has started before liveness probes are initiated. + More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' + format: int32 + type: integer + periodSeconds: + description: How often (in seconds) to perform the + probe. Default to 10 seconds. Minimum value is 1. + format: int32 + type: integer + successThreshold: + description: Minimum consecutive successes for the + probe to be considered successful after having failed. + Defaults to 1. Must be 1 for liveness and startup. + Minimum value is 1. + format: int32 + type: integer + tcpSocket: + description: TCPSocket specifies an action involving + a TCP port. + properties: + host: + description: 'Optional: Host name to connect to, + defaults to the pod IP.' + type: string + port: + anyOf: + - type: integer + - type: string + description: Number or name of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + description: Optional duration in seconds the pod + needs to terminate gracefully upon probe failure. + The grace period is the duration in seconds after + the processes running in the pod are sent a termination + signal and the time when the processes are forcibly + halted with a kill signal. Set this value longer + than the expected cleanup time for your process. + If this value is nil, the pod's terminationGracePeriodSeconds + will be used. Otherwise, this value overrides the + value provided by the pod spec. Value must be non-negative + integer. The value zero indicates stop immediately + via the kill signal (no opportunity to shut down). + This is a beta field and requires enabling ProbeTerminationGracePeriod + feature gate. Minimum value is 1. spec.terminationGracePeriodSeconds + is used if unset. + format: int64 + type: integer + timeoutSeconds: + description: 'Number of seconds after which the probe + times out. Defaults to 1 second. Minimum value is + 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' + format: int32 + type: integer + type: object + resizePolicy: + description: Resources resize policy for the container. + items: + description: ContainerResizePolicy represents resource + resize policy for the container. + properties: + resourceName: + description: 'Name of the resource to which this + resource resize policy applies. Supported values: + cpu, memory.' + type: string + restartPolicy: + description: Restart policy to apply when specified + resource is resized. If not specified, it defaults + to NotRequired. + type: string + required: + - resourceName + - restartPolicy + type: object + type: array + x-kubernetes-list-type: atomic + resources: + description: Resources are not allowed for ephemeral containers. + Ephemeral containers use spare resources already allocated + to the pod. + properties: + claims: + 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." + items: + description: ResourceClaim references one entry + in PodSpec.ResourceClaims. + properties: + name: + 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. + type: string + required: + - name + type: object + type: array + x-kubernetes-list-map-keys: + - name + x-kubernetes-list-type: map + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + description: 'Limits describes the maximum amount + of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + description: 'Requests describes the minimum amount + of compute resources required. If Requests is omitted + for a container, it defaults to Limits if that is + explicitly specified, otherwise to an implementation-defined + value. Requests cannot exceed Limits. More info: + https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' + type: object + type: object + restartPolicy: + description: Restart policy for the container to manage + the restart behavior of each container within a pod. + This may only be set for init containers. You cannot + set this field on ephemeral containers. + type: string + securityContext: + description: 'Optional: SecurityContext defines the security + options the ephemeral container should be run with. + If set, the fields of SecurityContext override the equivalent + fields of PodSecurityContext.' + properties: + allowPrivilegeEscalation: + description: 'AllowPrivilegeEscalation controls whether + a process can gain more privileges than its parent + process. This bool directly controls if the no_new_privs + flag will be set on the container process. AllowPrivilegeEscalation + is true always when the container is: 1) run as + Privileged 2) has CAP_SYS_ADMIN Note that this field + cannot be set when spec.os.name is windows.' + type: boolean + appArmorProfile: + 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. + properties: + localhostProfile: + 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". + type: string + type: + 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.' + type: string + required: + - type + type: object + capabilities: + description: The capabilities to add/drop when running + containers. Defaults to the default set of capabilities + granted by the container runtime. Note that this + field cannot be set when spec.os.name is windows. + properties: + add: + description: Added capabilities + items: + description: Capability represent POSIX capabilities + type + type: string + type: array + x-kubernetes-list-type: atomic + drop: + description: Removed capabilities + items: + description: Capability represent POSIX capabilities + type + type: string + type: array + x-kubernetes-list-type: atomic + type: object + privileged: + description: Run container in privileged mode. Processes + in privileged containers are essentially equivalent + to root on the host. Defaults to false. Note that + this field cannot be set when spec.os.name is windows. + type: boolean + procMount: + description: procMount denotes the type of proc mount + to use for the containers. The default is DefaultProcMount + which uses the container runtime defaults for readonly + paths and masked paths. This requires the ProcMountType + feature flag to be enabled. Note that this field + cannot be set when spec.os.name is windows. + type: string + readOnlyRootFilesystem: + description: Whether this container has a read-only + root filesystem. Default is false. Note that this + field cannot be set when spec.os.name is windows. + type: boolean + runAsGroup: + description: The GID to run the entrypoint of the + container process. Uses runtime default if unset. + May also be set in PodSecurityContext. If set in + both SecurityContext and PodSecurityContext, the + value specified in SecurityContext takes precedence. + Note that this field cannot be set when spec.os.name + is windows. + format: int64 + type: integer + runAsNonRoot: + description: Indicates that the container must run + as a non-root user. If true, the Kubelet will validate + the image at runtime to ensure that it does not + run as UID 0 (root) and fail to start the container + if it does. If unset or false, no such validation + will be performed. May also be set in PodSecurityContext. If + set in both SecurityContext and PodSecurityContext, + the value specified in SecurityContext takes precedence. + type: boolean + runAsUser: + description: The UID to run the entrypoint of the + container process. Defaults to user specified in + image metadata if unspecified. May also be set in + PodSecurityContext. If set in both SecurityContext + and PodSecurityContext, the value specified in SecurityContext + takes precedence. Note that this field cannot be + set when spec.os.name is windows. + format: int64 + type: integer + seLinuxOptions: + description: The SELinux context to be applied to + the container. If unspecified, the container runtime + will allocate a random SELinux context for each + container. May also be set in PodSecurityContext. If + set in both SecurityContext and PodSecurityContext, + the value specified in SecurityContext takes precedence. + Note that this field cannot be set when spec.os.name + is windows. + properties: + level: + description: Level is SELinux level label that + applies to the container. + type: string + role: + description: Role is a SELinux role label that + applies to the container. + type: string + type: + description: Type is a SELinux type label that + applies to the container. + type: string + user: + description: User is a SELinux user label that + applies to the container. + type: string + type: object + seccompProfile: + description: The seccomp options to use by this container. + If seccomp options are provided at both the pod + & container level, the container options override + the pod options. Note that this field cannot be + set when spec.os.name is windows. + properties: + localhostProfile: + description: localhostProfile indicates a profile + defined in a file on the node should be used. + The profile must be preconfigured on the node + to work. Must be a descending path, relative + to the kubelet's configured seccomp profile + location. Must be set if type is "Localhost". + Must NOT be set for any other type. + type: string + type: + description: "type indicates which kind of seccomp + profile will be applied. Valid options are: + \n Localhost - a profile defined in a file on + the node should be used. RuntimeDefault - the + container runtime default profile should be + used. Unconfined - no profile should be applied." + type: string + required: + - type + type: object + windowsOptions: + description: The Windows specific settings applied + to all containers. If unspecified, the options from + the PodSecurityContext will be used. If set in both + SecurityContext and PodSecurityContext, the value + specified in SecurityContext takes precedence. Note + that this field cannot be set when spec.os.name + is linux. + properties: + gmsaCredentialSpec: + description: GMSACredentialSpec is where the GMSA + admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) + inlines the contents of the GMSA credential + spec named by the GMSACredentialSpecName field. + type: string + gmsaCredentialSpecName: + description: GMSACredentialSpecName is the name + of the GMSA credential spec to use. + type: string + hostProcess: + description: HostProcess determines if a container + should be run as a 'Host Process' container. + All of a Pod's containers must have the same + effective HostProcess value (it is not allowed + to have a mix of HostProcess containers and + non-HostProcess containers). In addition, if + HostProcess is true then HostNetwork must also + be set to true. + type: boolean + runAsUserName: + description: The UserName in Windows to run the + entrypoint of the container process. Defaults + to the user specified in image metadata if unspecified. + May also be set in PodSecurityContext. If set + in both SecurityContext and PodSecurityContext, + the value specified in SecurityContext takes + precedence. + type: string + type: object + type: object + startupProbe: + description: Probes are not allowed for ephemeral containers. + properties: + exec: + description: Exec specifies the action to take. + properties: + command: + description: Command is the command line to execute + inside the container, the working directory + for the command is root ('/') in the container's + filesystem. The command is simply exec'd, it + is not run inside a shell, so traditional shell + instructions ('|', etc) won't work. To use a + shell, you need to explicitly call out to that + shell. Exit status of 0 is treated as live/healthy + and non-zero is unhealthy. + items: + type: string + type: array + x-kubernetes-list-type: atomic + type: object + failureThreshold: + description: Minimum consecutive failures for the + probe to be considered failed after having succeeded. + Defaults to 3. Minimum value is 1. + format: int32 + type: integer + grpc: + description: GRPC specifies an action involving a + GRPC port. + properties: + port: + description: Port number of the gRPC service. + Number must be in the range 1 to 65535. + format: int32 + type: integer + service: + description: "Service is the name of the service + to place in the gRPC HealthCheckRequest (see + https://github.com/grpc/grpc/blob/master/doc/health-checking.md). + \n If this is not specified, the default behavior + is defined by gRPC." + type: string + required: + - port + type: object + httpGet: + description: HTTPGet specifies the http request to + perform. + properties: + host: + description: Host name to connect to, defaults + to the pod IP. You probably want to set "Host" + in httpHeaders instead. + type: string + httpHeaders: + description: Custom headers to set in the request. + HTTP allows repeated headers. + items: + description: HTTPHeader describes a custom header + to be used in HTTP probes + properties: + name: + description: The header field name. This + will be canonicalized upon output, so + case-variant names will be understood + as the same header. + type: string + value: + description: The header field value + type: string + required: + - name + - value + type: object + type: array + x-kubernetes-list-type: atomic + path: + description: Path to access on the HTTP server. + type: string + port: + anyOf: + - type: integer + - type: string + description: Name or number of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. + x-kubernetes-int-or-string: true + scheme: + description: Scheme to use for connecting to the + host. Defaults to HTTP. + type: string + required: + - port + type: object + initialDelaySeconds: + description: 'Number of seconds after the container + has started before liveness probes are initiated. + More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' + format: int32 + type: integer + periodSeconds: + description: How often (in seconds) to perform the + probe. Default to 10 seconds. Minimum value is 1. + format: int32 + type: integer + successThreshold: + description: Minimum consecutive successes for the + probe to be considered successful after having failed. + Defaults to 1. Must be 1 for liveness and startup. + Minimum value is 1. + format: int32 + type: integer + tcpSocket: + description: TCPSocket specifies an action involving + a TCP port. + properties: + host: + description: 'Optional: Host name to connect to, + defaults to the pod IP.' + type: string + port: + anyOf: + - type: integer + - type: string + description: Number or name of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + description: Optional duration in seconds the pod + needs to terminate gracefully upon probe failure. + The grace period is the duration in seconds after + the processes running in the pod are sent a termination + signal and the time when the processes are forcibly + halted with a kill signal. Set this value longer + than the expected cleanup time for your process. + If this value is nil, the pod's terminationGracePeriodSeconds + will be used. Otherwise, this value overrides the + value provided by the pod spec. Value must be non-negative + integer. The value zero indicates stop immediately + via the kill signal (no opportunity to shut down). + This is a beta field and requires enabling ProbeTerminationGracePeriod + feature gate. Minimum value is 1. spec.terminationGracePeriodSeconds + is used if unset. + format: int64 + type: integer + timeoutSeconds: + description: 'Number of seconds after which the probe + times out. Defaults to 1 second. Minimum value is + 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' + format: int32 + type: integer + type: object + stdin: + description: Whether this container should allocate a + buffer for stdin in the container runtime. If this is + not set, reads from stdin in the container will always + result in EOF. Default is false. + type: boolean + stdinOnce: + description: Whether the container runtime should close + the stdin channel after it has been opened by a single + attach. When stdin is true the stdin stream will remain + open across multiple attach sessions. If stdinOnce is + set to true, stdin is opened on container start, is + empty until the first client attaches to stdin, and + then remains open and accepts data until the client + disconnects, at which time stdin is closed and remains + closed until the container is restarted. If this flag + is false, a container processes that reads from stdin + will never receive an EOF. Default is false + type: boolean + targetContainerName: + description: "If set, the name of the container from PodSpec + that this ephemeral container targets. The ephemeral + container will be run in the namespaces (IPC, PID, etc) + of this container. If not set then the ephemeral container + uses the namespaces configured in the Pod spec. \n The + container runtime must implement support for this feature. + If the runtime does not support namespace targeting + then the result of setting this field is undefined." + type: string + terminationMessagePath: + description: 'Optional: Path at which the file to which + the container''s termination message will be written + is mounted into the container''s filesystem. Message + written is intended to be brief final status, such as + an assertion failure message. Will be truncated by the + node if greater than 4096 bytes. The total message length + across all containers will be limited to 12kb. Defaults + to /dev/termination-log. Cannot be updated.' + type: string + terminationMessagePolicy: + description: Indicate how the termination message should + be populated. File will use the contents of terminationMessagePath + to populate the container status message on both success + and failure. FallbackToLogsOnError will use the last + chunk of container log output if the termination message + file is empty and the container exited with an error. + The log output is limited to 2048 bytes or 80 lines, + whichever is smaller. Defaults to File. Cannot be updated. + type: string + tty: + description: Whether this container should allocate a + TTY for itself, also requires 'stdin' to be true. Default + is false. + type: boolean + volumeDevices: + description: volumeDevices is the list of block devices + to be used by the container. + items: + description: volumeDevice describes a mapping of a raw + block device within a container. + properties: + devicePath: + description: devicePath is the path inside of the + container that the device will be mapped to. + type: string + name: + description: name must match the name of a persistentVolumeClaim + in the pod + type: string + required: + - devicePath + - name + type: object + type: array + x-kubernetes-list-map-keys: + - devicePath + x-kubernetes-list-type: map + volumeMounts: + description: Pod volumes to mount into the container's + filesystem. Subpath mounts are not allowed for ephemeral + containers. Cannot be updated. + items: + description: VolumeMount describes a mounting of a Volume + within a container. + properties: + mountPath: + description: Path within the container at which + the volume should be mounted. Must not contain + ':'. + type: string + mountPropagation: + description: mountPropagation determines how mounts + are propagated from the host to container and + the other way around. When not set, MountPropagationNone + is used. This field is beta in 1.10. When RecursiveReadOnly + is set to IfPossible or to Enabled, MountPropagation + must be None or unspecified (which defaults to + None). + type: string + name: + description: This must match the Name of a Volume. + type: string + readOnly: + description: Mounted read-only if true, read-write + otherwise (false or unspecified). Defaults to + false. + type: boolean + recursiveReadOnly: + description: "RecursiveReadOnly specifies whether + read-only mounts should be handled recursively. + \n If ReadOnly is false, this field has no meaning + and must be unspecified. \n If ReadOnly is true, + and this field is set to Disabled, the mount is + not made recursively read-only. If this field + is set to IfPossible, the mount is made recursively + read-only, if it is supported by the container + runtime. If this field is set to Enabled, the + mount is made recursively read-only if it is supported + by the container runtime, otherwise the pod will + not be started and an error will be generated + to indicate the reason. \n If this field is set + to IfPossible or Enabled, MountPropagation must + be set to None (or be unspecified, which defaults + to None). \n If this field is not specified, it + is treated as an equivalent of Disabled." + type: string + subPath: + description: Path within the volume from which the + container's volume should be mounted. Defaults + to "" (volume's root). + type: string + subPathExpr: + description: Expanded path within the volume from + which the container's volume should be mounted. + Behaves similarly to SubPath but environment variable + references $(VAR_NAME) are expanded using the + container's environment. Defaults to "" (volume's + root). SubPathExpr and SubPath are mutually exclusive. + type: string + required: + - mountPath + - name + type: object + type: array + x-kubernetes-list-map-keys: + - mountPath + x-kubernetes-list-type: map + workingDir: + description: Container's working directory. If not specified, + the container runtime's default will be used, which + might be configured in the container image. Cannot be + updated. + type: string + required: + - name + type: object + type: array + x-kubernetes-list-map-keys: + - name + x-kubernetes-list-type: map + hostAliases: + description: HostAliases is an optional list of hosts and IPs + that will be injected into the pod's hosts file if specified. + items: + description: HostAlias holds the mapping between IP and hostnames + that will be injected as an entry in the pod's hosts file. + properties: + hostnames: + description: Hostnames for the above IP address. + items: + type: string + type: array + x-kubernetes-list-type: atomic + ip: + description: IP address of the host file entry. + type: string + required: + - ip + type: object + type: array + x-kubernetes-list-map-keys: + - ip + x-kubernetes-list-type: map + hostIPC: + description: 'Use the host''s ipc namespace. Optional: Default + to false.' + type: boolean + hostNetwork: + description: Host networking requested for this pod. Use the + host's network namespace. If this option is set, the ports + that will be used must be specified. Default to false. + type: boolean + hostPID: + description: 'Use the host''s pid namespace. Optional: Default + to false.' + type: boolean + hostUsers: + description: 'Use the host''s user namespace. Optional: Default + to true. If set to true or not present, the pod will be run + in the host user namespace, useful for when the pod needs + a feature only available to the host user namespace, such + as loading a kernel module with CAP_SYS_MODULE. When set to + false, a new userns is created for the pod. Setting false + is useful for mitigating container breakout vulnerabilities + even allowing users to run their containers as root without + actually having root privileges on the host. This field is + alpha-level and is only honored by servers that enable the + UserNamespacesSupport feature.' + type: boolean + hostname: + description: Specifies the hostname of the Pod If not specified, + the pod's hostname will be set to a system-defined value. + type: string + imagePullSecrets: + 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. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod' + items: + description: LocalObjectReference contains enough information + to let you locate the referenced object inside the same + namespace. + properties: + name: + default: "" + 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.' + type: string + type: object + x-kubernetes-map-type: atomic + type: array + x-kubernetes-list-map-keys: + - name + x-kubernetes-list-type: map + initContainers: + description: 'List of initialization containers belonging to + the pod. Init containers are executed in order prior to containers + being started. If any init container fails, the pod is considered + to have failed and is handled according to its restartPolicy. + The name for an init container or normal container must be + unique among all containers. Init containers may not have + Lifecycle actions, Readiness probes, Liveness probes, or Startup + probes. The resourceRequirements of an init container are + taken into account during scheduling by finding the highest + request/limit for each resource type, and then using the max + of of that value or the sum of the normal containers. Limits + are applied to init containers in a similar fashion. Init + containers cannot currently be added or removed. Cannot be + updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/' + items: + description: A single application container that you want + to run within a pod. + properties: + args: + description: 'Arguments to the entrypoint. The container + image''s CMD is used if this is not provided. Variable + references $(VAR_NAME) are expanded using the container''s + environment. If a variable cannot be resolved, the reference + in the input string will be unchanged. Double $$ are + reduced to a single $, which allows for escaping the + $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will produce + the string literal "$(VAR_NAME)". Escaped references + will never be expanded, regardless of whether the variable + exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' + items: + type: string + type: array + x-kubernetes-list-type: atomic + command: + description: 'Entrypoint array. Not executed within a + shell. The container image''s ENTRYPOINT is used if + this is not provided. Variable references $(VAR_NAME) + are expanded using the container''s environment. If + a variable cannot be resolved, the reference in the + input string will be unchanged. Double $$ are reduced + to a single $, which allows for escaping the $(VAR_NAME) + syntax: i.e. "$$(VAR_NAME)" will produce the string + literal "$(VAR_NAME)". Escaped references will never + be expanded, regardless of whether the variable exists + or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' + items: + type: string + type: array + x-kubernetes-list-type: atomic + env: + description: List of environment variables to set in the + container. Cannot be updated. + items: + description: EnvVar represents an environment variable + present in a Container. + properties: + name: + description: Name of the environment variable. Must + be a C_IDENTIFIER. + type: string + value: + description: 'Variable references $(VAR_NAME) are + expanded using the previously defined environment + variables in the container and any service environment + variables. If a variable cannot be resolved, the + reference in the input string will be unchanged. + Double $$ are reduced to a single $, which allows + for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" + will produce the string literal "$(VAR_NAME)". + Escaped references will never be expanded, regardless + of whether the variable exists or not. Defaults + to "".' + type: string + valueFrom: + description: Source for the environment variable's + value. Cannot be used if value is not empty. + properties: + configMapKeyRef: + description: Selects a key of a ConfigMap. + properties: + key: + description: The key to select. + type: string + name: + default: "" + 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.' + type: string + optional: + description: Specify whether the ConfigMap + or its key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + fieldRef: + description: 'Selects a field of the pod: supports + metadata.name, metadata.namespace, `metadata.labels['''']`, + `metadata.annotations['''']`, spec.nodeName, + spec.serviceAccountName, status.hostIP, status.podIP, + status.podIPs.' + properties: + apiVersion: + description: Version of the schema the FieldPath + is written in terms of, defaults to "v1". + type: string + fieldPath: + description: Path of the field to select + in the specified API version. + type: string + required: + - fieldPath + type: object + x-kubernetes-map-type: atomic + resourceFieldRef: + description: 'Selects a resource of the container: + only resources limits and requests (limits.cpu, + limits.memory, limits.ephemeral-storage, requests.cpu, + requests.memory and requests.ephemeral-storage) + are currently supported.' + properties: + containerName: + description: 'Container name: required for + volumes, optional for env vars' + type: string + divisor: + anyOf: + - type: integer + - type: string + description: Specifies the output format + of the exposed resources, defaults to + "1" + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + description: 'Required: resource to select' + type: string + required: + - resource + type: object + x-kubernetes-map-type: atomic + secretKeyRef: + description: Selects a key of a secret in the + pod's namespace + properties: + key: + description: The key of the secret to select + from. Must be a valid secret key. + type: string + name: + default: "" + 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.' + type: string + optional: + description: Specify whether the Secret + or its key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + type: object + required: + - name + type: object + type: array + x-kubernetes-list-map-keys: + - name + x-kubernetes-list-type: map + envFrom: + description: List of sources to populate environment variables + in the container. The keys defined within a source must + be a C_IDENTIFIER. All invalid keys will be reported + as an event when the container is starting. When a key + exists in multiple sources, the value associated with + the last source will take precedence. Values defined + by an Env with a duplicate key will take precedence. + Cannot be updated. + items: + description: EnvFromSource represents the source of + a set of ConfigMaps + properties: + configMapRef: + description: The ConfigMap to select from + properties: + name: + default: "" + 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.' + type: string + optional: + description: Specify whether the ConfigMap must + be defined + type: boolean + type: object + x-kubernetes-map-type: atomic + prefix: + description: An optional identifier to prepend to + each key in the ConfigMap. Must be a C_IDENTIFIER. + type: string + secretRef: + description: The Secret to select from + properties: + name: + default: "" + 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.' + type: string + optional: + description: Specify whether the Secret must + be defined + type: boolean + type: object + x-kubernetes-map-type: atomic + type: object + type: array + x-kubernetes-list-type: atomic + image: + description: 'Container image name. More info: https://kubernetes.io/docs/concepts/containers/images + This field is optional to allow higher level config + management to default or override container images in + workload controllers like Deployments and StatefulSets.' + type: string + imagePullPolicy: + description: 'Image pull policy. One of Always, Never, + IfNotPresent. Defaults to Always if :latest tag is specified, + or IfNotPresent otherwise. Cannot be updated. More info: + https://kubernetes.io/docs/concepts/containers/images#updating-images' + type: string + lifecycle: + description: Actions that the management system should + take in response to container lifecycle events. Cannot + be updated. + properties: + postStart: + description: 'PostStart is called immediately after + a container is created. If the handler fails, the + container is terminated and restarted according + to its restart policy. Other management of the container + blocks until the hook completes. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' + properties: + exec: + description: Exec specifies the action to take. + properties: + command: + description: Command is the command line to + execute inside the container, the working + directory for the command is root ('/') + in the container's filesystem. The command + is simply exec'd, it is not run inside a + shell, so traditional shell instructions + ('|', etc) won't work. To use a shell, you + need to explicitly call out to that shell. + Exit status of 0 is treated as live/healthy + and non-zero is unhealthy. + items: + type: string + type: array + x-kubernetes-list-type: atomic + type: object + httpGet: + description: HTTPGet specifies the http request + to perform. + properties: + host: + description: Host name to connect to, defaults + to the pod IP. You probably want to set + "Host" in httpHeaders instead. + type: string + httpHeaders: + description: Custom headers to set in the + request. HTTP allows repeated headers. + items: + description: HTTPHeader describes a custom + header to be used in HTTP probes + properties: + name: + description: The header field name. + This will be canonicalized upon output, + so case-variant names will be understood + as the same header. + type: string + value: + description: The header field value + type: string + required: + - name + - value + type: object + type: array + x-kubernetes-list-type: atomic + path: + description: Path to access on the HTTP server. + type: string + port: + anyOf: + - type: integer + - type: string + description: Name or number of the port to + access on the container. Number must be + in the range 1 to 65535. Name must be an + IANA_SVC_NAME. + x-kubernetes-int-or-string: true + scheme: + description: Scheme to use for connecting + to the host. Defaults to HTTP. + type: string + required: + - port + type: object + sleep: + description: Sleep represents the duration that + the container should sleep before being terminated. + properties: + seconds: + description: Seconds is the number of seconds + to sleep. + format: int64 + type: integer + required: + - seconds + type: object + tcpSocket: + description: Deprecated. TCPSocket is NOT supported + as a LifecycleHandler and kept for the backward + compatibility. There are no validation of this + field and lifecycle hooks will fail in runtime + when tcp handler is specified. + properties: + host: + description: 'Optional: Host name to connect + to, defaults to the pod IP.' + type: string + port: + anyOf: + - type: integer + - type: string + description: Number or name of the port to + access on the container. Number must be + in the range 1 to 65535. Name must be an + IANA_SVC_NAME. + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + preStop: + description: 'PreStop is called immediately before + a container is terminated due to an API request + or management event such as liveness/startup probe + failure, preemption, resource contention, etc. The + handler is not called if the container crashes or + exits. The Pod''s termination grace period countdown + begins before the PreStop hook is executed. Regardless + of the outcome of the handler, the container will + eventually terminate within the Pod''s termination + grace period (unless delayed by finalizers). Other + management of the container blocks until the hook + completes or until the termination grace period + is reached. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' + properties: + exec: + description: Exec specifies the action to take. + properties: + command: + description: Command is the command line to + execute inside the container, the working + directory for the command is root ('/') + in the container's filesystem. The command + is simply exec'd, it is not run inside a + shell, so traditional shell instructions + ('|', etc) won't work. To use a shell, you + need to explicitly call out to that shell. + Exit status of 0 is treated as live/healthy + and non-zero is unhealthy. + items: + type: string + type: array + x-kubernetes-list-type: atomic + type: object + httpGet: + description: HTTPGet specifies the http request + to perform. + properties: + host: + description: Host name to connect to, defaults + to the pod IP. You probably want to set + "Host" in httpHeaders instead. + type: string + httpHeaders: + description: Custom headers to set in the + request. HTTP allows repeated headers. + items: + description: HTTPHeader describes a custom + header to be used in HTTP probes + properties: + name: + description: The header field name. + This will be canonicalized upon output, + so case-variant names will be understood + as the same header. + type: string + value: + description: The header field value + type: string + required: + - name + - value + type: object + type: array + x-kubernetes-list-type: atomic + path: + description: Path to access on the HTTP server. + type: string + port: + anyOf: + - type: integer + - type: string + description: Name or number of the port to + access on the container. Number must be + in the range 1 to 65535. Name must be an + IANA_SVC_NAME. + x-kubernetes-int-or-string: true + scheme: + description: Scheme to use for connecting + to the host. Defaults to HTTP. + type: string + required: + - port + type: object + sleep: + description: Sleep represents the duration that + the container should sleep before being terminated. + properties: + seconds: + description: Seconds is the number of seconds + to sleep. + format: int64 + type: integer + required: + - seconds + type: object + tcpSocket: + description: Deprecated. TCPSocket is NOT supported + as a LifecycleHandler and kept for the backward + compatibility. There are no validation of this + field and lifecycle hooks will fail in runtime + when tcp handler is specified. + properties: + host: + description: 'Optional: Host name to connect + to, defaults to the pod IP.' + type: string + port: + anyOf: + - type: integer + - type: string + description: Number or name of the port to + access on the container. Number must be + in the range 1 to 65535. Name must be an + IANA_SVC_NAME. + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + type: object + livenessProbe: + description: 'Periodic probe of container liveness. Container + will be restarted if the probe fails. Cannot be updated. + More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' + properties: + exec: + description: Exec specifies the action to take. + properties: + command: + description: Command is the command line to execute + inside the container, the working directory + for the command is root ('/') in the container's + filesystem. The command is simply exec'd, it + is not run inside a shell, so traditional shell + instructions ('|', etc) won't work. To use a + shell, you need to explicitly call out to that + shell. Exit status of 0 is treated as live/healthy + and non-zero is unhealthy. + items: + type: string + type: array + x-kubernetes-list-type: atomic + type: object + failureThreshold: + description: Minimum consecutive failures for the + probe to be considered failed after having succeeded. + Defaults to 3. Minimum value is 1. + format: int32 + type: integer + grpc: + description: GRPC specifies an action involving a + GRPC port. + properties: + port: + description: Port number of the gRPC service. + Number must be in the range 1 to 65535. + format: int32 + type: integer + service: + description: "Service is the name of the service + to place in the gRPC HealthCheckRequest (see + https://github.com/grpc/grpc/blob/master/doc/health-checking.md). + \n If this is not specified, the default behavior + is defined by gRPC." + type: string + required: + - port + type: object + httpGet: + description: HTTPGet specifies the http request to + perform. + properties: + host: + description: Host name to connect to, defaults + to the pod IP. You probably want to set "Host" + in httpHeaders instead. + type: string + httpHeaders: + description: Custom headers to set in the request. + HTTP allows repeated headers. + items: + description: HTTPHeader describes a custom header + to be used in HTTP probes + properties: + name: + description: The header field name. This + will be canonicalized upon output, so + case-variant names will be understood + as the same header. + type: string + value: + description: The header field value + type: string + required: + - name + - value + type: object + type: array + x-kubernetes-list-type: atomic + path: + description: Path to access on the HTTP server. + type: string + port: + anyOf: + - type: integer + - type: string + description: Name or number of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. + x-kubernetes-int-or-string: true + scheme: + description: Scheme to use for connecting to the + host. Defaults to HTTP. + type: string + required: + - port + type: object + initialDelaySeconds: + description: 'Number of seconds after the container + has started before liveness probes are initiated. + More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' + format: int32 + type: integer + periodSeconds: + description: How often (in seconds) to perform the + probe. Default to 10 seconds. Minimum value is 1. + format: int32 + type: integer + successThreshold: + description: Minimum consecutive successes for the + probe to be considered successful after having failed. + Defaults to 1. Must be 1 for liveness and startup. + Minimum value is 1. + format: int32 + type: integer + tcpSocket: + description: TCPSocket specifies an action involving + a TCP port. + properties: + host: + description: 'Optional: Host name to connect to, + defaults to the pod IP.' + type: string + port: + anyOf: + - type: integer + - type: string + description: Number or name of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + description: Optional duration in seconds the pod + needs to terminate gracefully upon probe failure. + The grace period is the duration in seconds after + the processes running in the pod are sent a termination + signal and the time when the processes are forcibly + halted with a kill signal. Set this value longer + than the expected cleanup time for your process. + If this value is nil, the pod's terminationGracePeriodSeconds + will be used. Otherwise, this value overrides the + value provided by the pod spec. Value must be non-negative + integer. The value zero indicates stop immediately + via the kill signal (no opportunity to shut down). + This is a beta field and requires enabling ProbeTerminationGracePeriod + feature gate. Minimum value is 1. spec.terminationGracePeriodSeconds + is used if unset. + format: int64 + type: integer + timeoutSeconds: + description: 'Number of seconds after which the probe + times out. Defaults to 1 second. Minimum value is + 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' + format: int32 + type: integer + type: object + name: + description: Name of the container specified as a DNS_LABEL. + Each container in a pod must have a unique name (DNS_LABEL). + Cannot be updated. + type: string + ports: + description: List of ports to expose from the container. + Not specifying a port here DOES NOT prevent that port + from being exposed. Any port which is listening on the + default "0.0.0.0" address inside a container will be + accessible from the network. Modifying this array with + strategic merge patch may corrupt the data. For more + information See https://github.com/kubernetes/kubernetes/issues/108255. + Cannot be updated. + items: + description: ContainerPort represents a network port + in a single container. + properties: + containerPort: + description: Number of port to expose on the pod's + IP address. This must be a valid port number, + 0 < x < 65536. + format: int32 + type: integer + hostIP: + description: What host IP to bind the external port + to. + type: string + hostPort: + description: Number of port to expose on the host. + If specified, this must be a valid port number, + 0 < x < 65536. If HostNetwork is specified, this + must match ContainerPort. Most containers do not + need this. + format: int32 + type: integer + name: + description: If specified, this must be an IANA_SVC_NAME + and unique within the pod. Each named port in + a pod must have a unique name. Name for the port + that can be referred to by services. + type: string + protocol: + default: TCP + description: Protocol for port. Must be UDP, TCP, + or SCTP. Defaults to "TCP". + type: string + required: + - containerPort + type: object + type: array + x-kubernetes-list-map-keys: + - containerPort + - protocol + x-kubernetes-list-type: map + readinessProbe: + description: 'Periodic probe of container service readiness. + Container will be removed from service endpoints if + the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' + properties: + exec: + description: Exec specifies the action to take. + properties: + command: + description: Command is the command line to execute + inside the container, the working directory + for the command is root ('/') in the container's + filesystem. The command is simply exec'd, it + is not run inside a shell, so traditional shell + instructions ('|', etc) won't work. To use a + shell, you need to explicitly call out to that + shell. Exit status of 0 is treated as live/healthy + and non-zero is unhealthy. + items: + type: string + type: array + x-kubernetes-list-type: atomic + type: object + failureThreshold: + description: Minimum consecutive failures for the + probe to be considered failed after having succeeded. + Defaults to 3. Minimum value is 1. + format: int32 + type: integer + grpc: + description: GRPC specifies an action involving a + GRPC port. + properties: + port: + description: Port number of the gRPC service. + Number must be in the range 1 to 65535. + format: int32 + type: integer + service: + description: "Service is the name of the service + to place in the gRPC HealthCheckRequest (see + https://github.com/grpc/grpc/blob/master/doc/health-checking.md). + \n If this is not specified, the default behavior + is defined by gRPC." + type: string + required: + - port + type: object + httpGet: + description: HTTPGet specifies the http request to + perform. + properties: + host: + description: Host name to connect to, defaults + to the pod IP. You probably want to set "Host" + in httpHeaders instead. + type: string + httpHeaders: + description: Custom headers to set in the request. + HTTP allows repeated headers. + items: + description: HTTPHeader describes a custom header + to be used in HTTP probes + properties: + name: + description: The header field name. This + will be canonicalized upon output, so + case-variant names will be understood + as the same header. + type: string + value: + description: The header field value + type: string + required: + - name + - value + type: object + type: array + x-kubernetes-list-type: atomic + path: + description: Path to access on the HTTP server. + type: string + port: + anyOf: + - type: integer + - type: string + description: Name or number of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. + x-kubernetes-int-or-string: true + scheme: + description: Scheme to use for connecting to the + host. Defaults to HTTP. + type: string + required: + - port + type: object + initialDelaySeconds: + description: 'Number of seconds after the container + has started before liveness probes are initiated. + More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' + format: int32 + type: integer + periodSeconds: + description: How often (in seconds) to perform the + probe. Default to 10 seconds. Minimum value is 1. + format: int32 + type: integer + successThreshold: + description: Minimum consecutive successes for the + probe to be considered successful after having failed. + Defaults to 1. Must be 1 for liveness and startup. + Minimum value is 1. + format: int32 + type: integer + tcpSocket: + description: TCPSocket specifies an action involving + a TCP port. + properties: + host: + description: 'Optional: Host name to connect to, + defaults to the pod IP.' + type: string + port: + anyOf: + - type: integer + - type: string + description: Number or name of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + description: Optional duration in seconds the pod + needs to terminate gracefully upon probe failure. + The grace period is the duration in seconds after + the processes running in the pod are sent a termination + signal and the time when the processes are forcibly + halted with a kill signal. Set this value longer + than the expected cleanup time for your process. + If this value is nil, the pod's terminationGracePeriodSeconds + will be used. Otherwise, this value overrides the + value provided by the pod spec. Value must be non-negative + integer. The value zero indicates stop immediately + via the kill signal (no opportunity to shut down). + This is a beta field and requires enabling ProbeTerminationGracePeriod + feature gate. Minimum value is 1. spec.terminationGracePeriodSeconds + is used if unset. + format: int64 + type: integer + timeoutSeconds: + description: 'Number of seconds after which the probe + times out. Defaults to 1 second. Minimum value is + 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' + format: int32 + type: integer + type: object + resizePolicy: + description: Resources resize policy for the container. + items: + description: ContainerResizePolicy represents resource + resize policy for the container. + properties: + resourceName: + description: 'Name of the resource to which this + resource resize policy applies. Supported values: + cpu, memory.' + type: string + restartPolicy: + description: Restart policy to apply when specified + resource is resized. If not specified, it defaults + to NotRequired. + type: string + required: + - resourceName + - restartPolicy + type: object + type: array + x-kubernetes-list-type: atomic + resources: + description: 'Compute Resources required by this container. + Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' + properties: + claims: + 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." + items: + description: ResourceClaim references one entry + in PodSpec.ResourceClaims. + properties: + name: + 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. + type: string + required: + - name + type: object + type: array + x-kubernetes-list-map-keys: + - name + x-kubernetes-list-type: map + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + description: 'Limits describes the maximum amount + of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + description: 'Requests describes the minimum amount + of compute resources required. If Requests is omitted + for a container, it defaults to Limits if that is + explicitly specified, otherwise to an implementation-defined + value. Requests cannot exceed Limits. More info: + https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' + type: object + type: object + restartPolicy: + 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.' + type: string + securityContext: + description: 'SecurityContext defines the security options + the container should be run with. If set, the fields + of SecurityContext override the equivalent fields of + PodSecurityContext. More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/' + properties: + allowPrivilegeEscalation: + description: 'AllowPrivilegeEscalation controls whether + a process can gain more privileges than its parent + process. This bool directly controls if the no_new_privs + flag will be set on the container process. AllowPrivilegeEscalation + is true always when the container is: 1) run as + Privileged 2) has CAP_SYS_ADMIN Note that this field + cannot be set when spec.os.name is windows.' + type: boolean + appArmorProfile: + 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. + properties: + localhostProfile: + 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". + type: string + type: + 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.' + type: string + required: + - type + type: object + capabilities: + description: The capabilities to add/drop when running + containers. Defaults to the default set of capabilities + granted by the container runtime. Note that this + field cannot be set when spec.os.name is windows. + properties: + add: + description: Added capabilities + items: + description: Capability represent POSIX capabilities + type + type: string + type: array + x-kubernetes-list-type: atomic + drop: + description: Removed capabilities + items: + description: Capability represent POSIX capabilities + type + type: string + type: array + x-kubernetes-list-type: atomic + type: object + privileged: + description: Run container in privileged mode. Processes + in privileged containers are essentially equivalent + to root on the host. Defaults to false. Note that + this field cannot be set when spec.os.name is windows. + type: boolean + procMount: + description: procMount denotes the type of proc mount + to use for the containers. The default is DefaultProcMount + which uses the container runtime defaults for readonly + paths and masked paths. This requires the ProcMountType + feature flag to be enabled. Note that this field + cannot be set when spec.os.name is windows. + type: string + readOnlyRootFilesystem: + description: Whether this container has a read-only + root filesystem. Default is false. Note that this + field cannot be set when spec.os.name is windows. + type: boolean + runAsGroup: + description: The GID to run the entrypoint of the + container process. Uses runtime default if unset. + May also be set in PodSecurityContext. If set in + both SecurityContext and PodSecurityContext, the + value specified in SecurityContext takes precedence. + Note that this field cannot be set when spec.os.name + is windows. + format: int64 + type: integer + runAsNonRoot: + description: Indicates that the container must run + as a non-root user. If true, the Kubelet will validate + the image at runtime to ensure that it does not + run as UID 0 (root) and fail to start the container + if it does. If unset or false, no such validation + will be performed. May also be set in PodSecurityContext. If + set in both SecurityContext and PodSecurityContext, + the value specified in SecurityContext takes precedence. + type: boolean + runAsUser: + description: The UID to run the entrypoint of the + container process. Defaults to user specified in + image metadata if unspecified. May also be set in + PodSecurityContext. If set in both SecurityContext + and PodSecurityContext, the value specified in SecurityContext + takes precedence. Note that this field cannot be + set when spec.os.name is windows. + format: int64 + type: integer + seLinuxOptions: + description: The SELinux context to be applied to + the container. If unspecified, the container runtime + will allocate a random SELinux context for each + container. May also be set in PodSecurityContext. If + set in both SecurityContext and PodSecurityContext, + the value specified in SecurityContext takes precedence. + Note that this field cannot be set when spec.os.name + is windows. + properties: + level: + description: Level is SELinux level label that + applies to the container. + type: string + role: + description: Role is a SELinux role label that + applies to the container. + type: string + type: + description: Type is a SELinux type label that + applies to the container. + type: string + user: + description: User is a SELinux user label that + applies to the container. + type: string + type: object + seccompProfile: + description: The seccomp options to use by this container. + If seccomp options are provided at both the pod + & container level, the container options override + the pod options. Note that this field cannot be + set when spec.os.name is windows. + properties: + localhostProfile: + description: localhostProfile indicates a profile + defined in a file on the node should be used. + The profile must be preconfigured on the node + to work. Must be a descending path, relative + to the kubelet's configured seccomp profile + location. Must be set if type is "Localhost". + Must NOT be set for any other type. + type: string + type: + description: "type indicates which kind of seccomp + profile will be applied. Valid options are: + \n Localhost - a profile defined in a file on + the node should be used. RuntimeDefault - the + container runtime default profile should be + used. Unconfined - no profile should be applied." + type: string + required: + - type + type: object + windowsOptions: + description: The Windows specific settings applied + to all containers. If unspecified, the options from + the PodSecurityContext will be used. If set in both + SecurityContext and PodSecurityContext, the value + specified in SecurityContext takes precedence. Note + that this field cannot be set when spec.os.name + is linux. + properties: + gmsaCredentialSpec: + description: GMSACredentialSpec is where the GMSA + admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) + inlines the contents of the GMSA credential + spec named by the GMSACredentialSpecName field. + type: string + gmsaCredentialSpecName: + description: GMSACredentialSpecName is the name + of the GMSA credential spec to use. + type: string + hostProcess: + description: HostProcess determines if a container + should be run as a 'Host Process' container. + All of a Pod's containers must have the same + effective HostProcess value (it is not allowed + to have a mix of HostProcess containers and + non-HostProcess containers). In addition, if + HostProcess is true then HostNetwork must also + be set to true. + type: boolean + runAsUserName: + description: The UserName in Windows to run the + entrypoint of the container process. Defaults + to the user specified in image metadata if unspecified. + May also be set in PodSecurityContext. If set + in both SecurityContext and PodSecurityContext, + the value specified in SecurityContext takes + precedence. + type: string + type: object + type: object + startupProbe: + description: 'StartupProbe indicates that the Pod has + successfully initialized. If specified, no other probes + are executed until this completes successfully. If this + probe fails, the Pod will be restarted, just as if the + livenessProbe failed. This can be used to provide different + probe parameters at the beginning of a Pod''s lifecycle, + when it might take a long time to load data or warm + a cache, than during steady-state operation. This cannot + be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' + properties: + exec: + description: Exec specifies the action to take. + properties: + command: + description: Command is the command line to execute + inside the container, the working directory + for the command is root ('/') in the container's + filesystem. The command is simply exec'd, it + is not run inside a shell, so traditional shell + instructions ('|', etc) won't work. To use a + shell, you need to explicitly call out to that + shell. Exit status of 0 is treated as live/healthy + and non-zero is unhealthy. + items: + type: string + type: array + x-kubernetes-list-type: atomic + type: object + failureThreshold: + description: Minimum consecutive failures for the + probe to be considered failed after having succeeded. + Defaults to 3. Minimum value is 1. + format: int32 + type: integer + grpc: + description: GRPC specifies an action involving a + GRPC port. + properties: + port: + description: Port number of the gRPC service. + Number must be in the range 1 to 65535. + format: int32 + type: integer + service: + description: "Service is the name of the service + to place in the gRPC HealthCheckRequest (see + https://github.com/grpc/grpc/blob/master/doc/health-checking.md). + \n If this is not specified, the default behavior + is defined by gRPC." + type: string + required: + - port + type: object + httpGet: + description: HTTPGet specifies the http request to + perform. + properties: + host: + description: Host name to connect to, defaults + to the pod IP. You probably want to set "Host" + in httpHeaders instead. + type: string + httpHeaders: + description: Custom headers to set in the request. + HTTP allows repeated headers. + items: + description: HTTPHeader describes a custom header + to be used in HTTP probes + properties: + name: + description: The header field name. This + will be canonicalized upon output, so + case-variant names will be understood + as the same header. + type: string + value: + description: The header field value + type: string + required: + - name + - value + type: object + type: array + x-kubernetes-list-type: atomic + path: + description: Path to access on the HTTP server. + type: string + port: + anyOf: + - type: integer + - type: string + description: Name or number of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. + x-kubernetes-int-or-string: true + scheme: + description: Scheme to use for connecting to the + host. Defaults to HTTP. + type: string + required: + - port + type: object + initialDelaySeconds: + description: 'Number of seconds after the container + has started before liveness probes are initiated. + More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' + format: int32 + type: integer + periodSeconds: + description: How often (in seconds) to perform the + probe. Default to 10 seconds. Minimum value is 1. + format: int32 + type: integer + successThreshold: + description: Minimum consecutive successes for the + probe to be considered successful after having failed. + Defaults to 1. Must be 1 for liveness and startup. + Minimum value is 1. + format: int32 + type: integer + tcpSocket: + description: TCPSocket specifies an action involving + a TCP port. + properties: + host: + description: 'Optional: Host name to connect to, + defaults to the pod IP.' + type: string + port: + anyOf: + - type: integer + - type: string + description: Number or name of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + description: Optional duration in seconds the pod + needs to terminate gracefully upon probe failure. + The grace period is the duration in seconds after + the processes running in the pod are sent a termination + signal and the time when the processes are forcibly + halted with a kill signal. Set this value longer + than the expected cleanup time for your process. + If this value is nil, the pod's terminationGracePeriodSeconds + will be used. Otherwise, this value overrides the + value provided by the pod spec. Value must be non-negative + integer. The value zero indicates stop immediately + via the kill signal (no opportunity to shut down). + This is a beta field and requires enabling ProbeTerminationGracePeriod + feature gate. Minimum value is 1. spec.terminationGracePeriodSeconds + is used if unset. + format: int64 + type: integer + timeoutSeconds: + description: 'Number of seconds after which the probe + times out. Defaults to 1 second. Minimum value is + 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' + format: int32 + type: integer + type: object + stdin: + description: Whether this container should allocate a + buffer for stdin in the container runtime. If this is + not set, reads from stdin in the container will always + result in EOF. Default is false. + type: boolean + stdinOnce: + description: Whether the container runtime should close + the stdin channel after it has been opened by a single + attach. When stdin is true the stdin stream will remain + open across multiple attach sessions. If stdinOnce is + set to true, stdin is opened on container start, is + empty until the first client attaches to stdin, and + then remains open and accepts data until the client + disconnects, at which time stdin is closed and remains + closed until the container is restarted. If this flag + is false, a container processes that reads from stdin + will never receive an EOF. Default is false + type: boolean + terminationMessagePath: + description: 'Optional: Path at which the file to which + the container''s termination message will be written + is mounted into the container''s filesystem. Message + written is intended to be brief final status, such as + an assertion failure message. Will be truncated by the + node if greater than 4096 bytes. The total message length + across all containers will be limited to 12kb. Defaults + to /dev/termination-log. Cannot be updated.' + type: string + terminationMessagePolicy: + description: Indicate how the termination message should + be populated. File will use the contents of terminationMessagePath + to populate the container status message on both success + and failure. FallbackToLogsOnError will use the last + chunk of container log output if the termination message + file is empty and the container exited with an error. + The log output is limited to 2048 bytes or 80 lines, + whichever is smaller. Defaults to File. Cannot be updated. + type: string + tty: + description: Whether this container should allocate a + TTY for itself, also requires 'stdin' to be true. Default + is false. + type: boolean + volumeDevices: + description: volumeDevices is the list of block devices + to be used by the container. + items: + description: volumeDevice describes a mapping of a raw + block device within a container. + properties: + devicePath: + description: devicePath is the path inside of the + container that the device will be mapped to. + type: string + name: + description: name must match the name of a persistentVolumeClaim + in the pod + type: string + required: + - devicePath + - name + type: object + type: array + x-kubernetes-list-map-keys: + - devicePath + x-kubernetes-list-type: map + volumeMounts: + description: Pod volumes to mount into the container's + filesystem. Cannot be updated. + items: + description: VolumeMount describes a mounting of a Volume + within a container. + properties: + mountPath: + description: Path within the container at which + the volume should be mounted. Must not contain + ':'. + type: string + mountPropagation: + description: mountPropagation determines how mounts + are propagated from the host to container and + the other way around. When not set, MountPropagationNone + is used. This field is beta in 1.10. When RecursiveReadOnly + is set to IfPossible or to Enabled, MountPropagation + must be None or unspecified (which defaults to + None). + type: string + name: + description: This must match the Name of a Volume. + type: string + readOnly: + description: Mounted read-only if true, read-write + otherwise (false or unspecified). Defaults to + false. + type: boolean + recursiveReadOnly: + description: "RecursiveReadOnly specifies whether + read-only mounts should be handled recursively. + \n If ReadOnly is false, this field has no meaning + and must be unspecified. \n If ReadOnly is true, + and this field is set to Disabled, the mount is + not made recursively read-only. If this field + is set to IfPossible, the mount is made recursively + read-only, if it is supported by the container + runtime. If this field is set to Enabled, the + mount is made recursively read-only if it is supported + by the container runtime, otherwise the pod will + not be started and an error will be generated + to indicate the reason. \n If this field is set + to IfPossible or Enabled, MountPropagation must + be set to None (or be unspecified, which defaults + to None). \n If this field is not specified, it + is treated as an equivalent of Disabled." + type: string + subPath: + description: Path within the volume from which the + container's volume should be mounted. Defaults + to "" (volume's root). + type: string + subPathExpr: + description: Expanded path within the volume from + which the container's volume should be mounted. + Behaves similarly to SubPath but environment variable + references $(VAR_NAME) are expanded using the + container's environment. Defaults to "" (volume's + root). SubPathExpr and SubPath are mutually exclusive. + type: string + required: + - mountPath + - name + type: object + type: array + x-kubernetes-list-map-keys: + - mountPath + x-kubernetes-list-type: map + workingDir: + description: Container's working directory. If not specified, + the container runtime's default will be used, which + might be configured in the container image. Cannot be + updated. + type: string + required: + - name + type: object + type: array + x-kubernetes-list-map-keys: + - name + x-kubernetes-list-type: map + nodeName: + description: NodeName is a request to schedule this pod onto + a specific node. If it is non-empty, the scheduler simply + schedules this pod onto that node, assuming that it fits resource + requirements. + type: string + nodeSelector: + additionalProperties: + type: string + description: 'NodeSelector is a selector which must be true + for the pod to fit on a node. Selector which must match a + node''s labels for the pod to be scheduled on that node. More + info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/' + type: object + x-kubernetes-map-type: atomic + os: + description: "Specifies the OS of the containers in the pod. + Some pod and container fields are restricted if this is set. + \n If the OS field is set to linux, the following fields must + be unset: -securityContext.windowsOptions \n If the OS field + is set to windows, following fields must be unset: - spec.hostPID + - spec.hostIPC - spec.hostUsers - spec.securityContext.appArmorProfile + - spec.securityContext.seLinuxOptions - spec.securityContext.seccompProfile + - spec.securityContext.fsGroup - spec.securityContext.fsGroupChangePolicy + - spec.securityContext.sysctls - spec.shareProcessNamespace + - spec.securityContext.runAsUser - spec.securityContext.runAsGroup + - spec.securityContext.supplementalGroups - spec.containers[*].securityContext.appArmorProfile + - spec.containers[*].securityContext.seLinuxOptions - spec.containers[*].securityContext.seccompProfile + - spec.containers[*].securityContext.capabilities - spec.containers[*].securityContext.readOnlyRootFilesystem + - spec.containers[*].securityContext.privileged - spec.containers[*].securityContext.allowPrivilegeEscalation + - spec.containers[*].securityContext.procMount - spec.containers[*].securityContext.runAsUser + - spec.containers[*].securityContext.runAsGroup" + properties: + name: + description: 'Name is the name of the operating system. + The currently supported values are linux and windows. + Additional value may be defined in future and can be one + of: https://github.com/opencontainers/runtime-spec/blob/master/config.md#platform-specific-configuration + Clients should expect to handle additional values and + treat unrecognized values in this field as os: null' + type: string + required: + - name + type: object + overhead: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + description: 'Overhead represents the resource overhead associated + with running a pod for a given RuntimeClass. This field will + be autopopulated at admission time by the RuntimeClass admission + controller. If the RuntimeClass admission controller is enabled, + overhead must not be set in Pod create requests. The RuntimeClass + admission controller will reject Pod create requests which + have the overhead already set. If RuntimeClass is configured + and selected in the PodSpec, Overhead will be set to the value + defined in the corresponding RuntimeClass, otherwise it will + remain unset and treated as zero. More info: https://git.k8s.io/enhancements/keps/sig-node/688-pod-overhead/README.md' + type: object + preemptionPolicy: + description: PreemptionPolicy is the Policy for preempting pods + with lower priority. One of Never, PreemptLowerPriority. Defaults + to PreemptLowerPriority if unset. + type: string + priority: + 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. + format: int32 + type: integer + priorityClassName: + 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. + type: string + readinessGates: + description: 'If specified, all readiness gates will be evaluated + for pod readiness. A pod is ready when all its containers + are ready AND all conditions specified in the readiness gates + have status equal to "True" More info: https://git.k8s.io/enhancements/keps/sig-network/580-pod-readiness-gates' + items: + description: PodReadinessGate contains the reference to a + pod condition + properties: + conditionType: + description: ConditionType refers to a condition in the + pod's condition list with matching type. + type: string + required: + - conditionType + type: object + type: array + x-kubernetes-list-type: atomic + resourceClaims: + description: "ResourceClaims defines which ResourceClaims must + be allocated and reserved before the Pod is allowed to start. + The resources will be made available to those containers which + consume them by name. \n This is an alpha field and requires + enabling the DynamicResourceAllocation feature gate. \n This + field is immutable." + items: + description: PodResourceClaim references exactly one ResourceClaim + through a ClaimSource. It adds a name to it that uniquely + identifies the ResourceClaim inside the Pod. Containers + that need access to the ResourceClaim reference it with + this name. + properties: + name: + description: Name uniquely identifies this resource claim + inside the pod. This must be a DNS_LABEL. + type: string + source: + description: Source describes where to find the ResourceClaim. + properties: + resourceClaimName: + description: ResourceClaimName is the name of a ResourceClaim + object in the same namespace as this pod. + type: string + resourceClaimTemplateName: + description: "ResourceClaimTemplateName is the name + of a ResourceClaimTemplate object in the same namespace + as this pod. \n The template will be used to create + a new ResourceClaim, which will be bound to this + pod. When this pod is deleted, the ResourceClaim + will also be deleted. The pod name and resource + name, along with a generated component, will be + used to form a unique name for the ResourceClaim, + which will be recorded in pod.status.resourceClaimStatuses. + \n This field is immutable and no changes will be + made to the corresponding ResourceClaim by the control + plane after creating the ResourceClaim." + type: string + type: object + required: + - name + type: object + type: array + x-kubernetes-list-map-keys: + - name + x-kubernetes-list-type: map + restartPolicy: + description: 'Restart policy for all containers within the pod. + One of Always, OnFailure, Never. In some contexts, only a + subset of those values may be permitted. Default to Always. + More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy' + type: string + runtimeClassName: + description: 'RuntimeClassName refers to a RuntimeClass object + in the node.k8s.io group, which should be used to run this + pod. If no RuntimeClass resource matches the named class, + the pod will not be run. If unset or empty, the "legacy" RuntimeClass + will be used, which is an implicit class with an empty definition + that uses the default runtime handler. More info: https://git.k8s.io/enhancements/keps/sig-node/585-runtime-class' + type: string + schedulerName: + description: If specified, the pod will be dispatched by specified + scheduler. If not specified, the pod will be dispatched by + default scheduler. + type: string + schedulingGates: + description: "SchedulingGates is an opaque list of values that + if specified will block scheduling the pod. If schedulingGates + is not empty, the pod will stay in the SchedulingGated state + and the scheduler will not attempt to schedule the pod. \n + SchedulingGates can only be set at pod creation time, and + be removed only afterwards." + items: + description: PodSchedulingGate is associated to a Pod to guard + its scheduling. + properties: + name: + description: Name of the scheduling gate. Each scheduling + gate must have a unique name field. + type: string + required: + - name + type: object + type: array + x-kubernetes-list-map-keys: + - name + x-kubernetes-list-type: map + securityContext: + description: 'SecurityContext holds pod-level security attributes + and common container settings. Optional: Defaults to empty. See + type description for default values of each field.' + properties: + appArmorProfile: + 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. + properties: + localhostProfile: + 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". + type: string + type: + 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.' + type: string + required: + - type + type: object + fsGroup: + description: "A special supplemental group that applies + to all containers in a pod. Some volume types allow the + Kubelet to change the ownership of that volume to be owned + by the pod: \n 1. The owning GID will be the FSGroup 2. + The setgid bit is set (new files created in the volume + will be owned by FSGroup) 3. The permission bits are OR'd + with rw-rw---- \n If unset, the Kubelet will not modify + the ownership and permissions of any volume. Note that + this field cannot be set when spec.os.name is windows." + format: int64 + type: integer + fsGroupChangePolicy: + description: 'fsGroupChangePolicy defines behavior of changing + ownership and permission of the volume before being exposed + inside Pod. This field will only apply to volume types + which support fsGroup based ownership(and permissions). + It will have no effect on ephemeral volume types such + as: secret, configmaps and emptydir. Valid values are + "OnRootMismatch" and "Always". If not specified, "Always" + is used. Note that this field cannot be set when spec.os.name + is windows.' + type: string + runAsGroup: + description: The GID to run the entrypoint of the container + process. Uses runtime default if unset. May also be set + in SecurityContext. If set in both SecurityContext and + PodSecurityContext, the value specified in SecurityContext + takes precedence for that container. Note that this field + cannot be set when spec.os.name is windows. + format: int64 + type: integer + runAsNonRoot: + description: Indicates that the container must run as a + non-root user. If true, the Kubelet will validate the + image at runtime to ensure that it does not run as UID + 0 (root) and fail to start the container if it does. If + unset or false, no such validation will be performed. + May also be set in SecurityContext. If set in both SecurityContext + and PodSecurityContext, the value specified in SecurityContext + takes precedence. + type: boolean + runAsUser: + description: The UID to run the entrypoint of the container + process. Defaults to user specified in image metadata + if unspecified. May also be set in SecurityContext. If + set in both SecurityContext and PodSecurityContext, the + value specified in SecurityContext takes precedence for + that container. Note that this field cannot be set when + spec.os.name is windows. + format: int64 + type: integer + seLinuxOptions: + description: The SELinux context to be applied to all containers. + If unspecified, the container runtime will allocate a + random SELinux context for each container. May also be + set in SecurityContext. If set in both SecurityContext + and PodSecurityContext, the value specified in SecurityContext + takes precedence for that container. Note that this field + cannot be set when spec.os.name is windows. + properties: + level: + description: Level is SELinux level label that applies + to the container. + type: string + role: + description: Role is a SELinux role label that applies + to the container. + type: string + type: + description: Type is a SELinux type label that applies + to the container. + type: string + user: + description: User is a SELinux user label that applies + to the container. + type: string + type: object + seccompProfile: + description: The seccomp options to use by the containers + in this pod. Note that this field cannot be set when spec.os.name + is windows. + properties: + localhostProfile: + description: localhostProfile indicates a profile defined + in a file on the node should be used. The profile + must be preconfigured on the node to work. Must be + a descending path, relative to the kubelet's configured + seccomp profile location. Must be set if type is "Localhost". + Must NOT be set for any other type. + type: string + type: + description: "type indicates which kind of seccomp profile + will be applied. Valid options are: \n Localhost - + a profile defined in a file on the node should be + used. RuntimeDefault - the container runtime default + profile should be used. Unconfined - no profile should + be applied." + type: string + required: + - type + type: object + supplementalGroups: + description: A list of groups applied to the first process + run in each container, in addition to the container's + primary GID, 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. + items: + format: int64 + type: integer + type: array + x-kubernetes-list-type: atomic + sysctls: + description: Sysctls hold a list of namespaced sysctls used + for the pod. Pods with unsupported sysctls (by the container + runtime) might fail to launch. Note that this field cannot + be set when spec.os.name is windows. + items: + description: Sysctl defines a kernel parameter to be set + properties: + name: + description: Name of a property to set + type: string + value: + description: Value of a property to set + type: string + required: + - name + - value + type: object + type: array + x-kubernetes-list-type: atomic + windowsOptions: + description: The Windows specific settings applied to all + containers. If unspecified, the options within a container's + SecurityContext will be used. If set in both SecurityContext + and PodSecurityContext, the value specified in SecurityContext + takes precedence. Note that this field cannot be set when + spec.os.name is linux. + properties: + gmsaCredentialSpec: + description: GMSACredentialSpec is where the GMSA admission + webhook (https://github.com/kubernetes-sigs/windows-gmsa) + inlines the contents of the GMSA credential spec named + by the GMSACredentialSpecName field. + type: string + gmsaCredentialSpecName: + description: GMSACredentialSpecName is the name of the + GMSA credential spec to use. + type: string + hostProcess: + description: HostProcess determines if a container should + be run as a 'Host Process' container. All of a Pod's + containers must have the same effective HostProcess + value (it is not allowed to have a mix of HostProcess + containers and non-HostProcess containers). In addition, + if HostProcess is true then HostNetwork must also + be set to true. + type: boolean + runAsUserName: + description: The UserName in Windows to run the entrypoint + of the container process. Defaults to the user specified + in image metadata if unspecified. May also be set + in PodSecurityContext. If set in both SecurityContext + and PodSecurityContext, the value specified in SecurityContext + takes precedence. + type: string + type: object + type: object + serviceAccount: + description: 'DeprecatedServiceAccount is a deprecated alias + for ServiceAccountName. Deprecated: Use serviceAccountName + instead.' + type: string + serviceAccountName: + description: 'ServiceAccountName is the name of the ServiceAccount + to use to run this pod. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/' + type: string + setHostnameAsFQDN: + description: If true the pod's hostname will be configured as + the pod's FQDN, rather than the leaf name (the default). In + Linux containers, this means setting the FQDN in the hostname + field of the kernel (the nodename field of struct utsname). + In Windows containers, this means setting the registry value + of hostname for the registry key HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\Tcpip\\Parameters + to FQDN. If a pod does not have FQDN, this has no effect. + Default to false. + type: boolean + shareProcessNamespace: + description: 'Share a single process namespace between all of + the containers in a pod. When this is set containers will + be able to view and signal processes from other containers + in the same pod, and the first process in each container will + not be assigned PID 1. HostPID and ShareProcessNamespace cannot + both be set. Optional: Default to false.' + type: boolean + subdomain: + description: If specified, the fully qualified Pod hostname + will be "...svc.". If not specified, the pod will not have a domainname + at all. + type: string + terminationGracePeriodSeconds: + description: Optional duration in seconds the pod needs to terminate + gracefully. May be decreased in delete request. Value must + be non-negative integer. The value zero indicates stop immediately + via the kill signal (no opportunity to shut down). If this + value is nil, the default grace period will be used instead. + 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. Defaults to 30 seconds. + format: int64 + type: integer + tolerations: + description: If specified, the pod's tolerations. + items: + description: The pod this Toleration is attached to tolerates + any taint that matches the triple using + the matching operator . + properties: + effect: + description: Effect indicates the taint effect to match. + Empty means match all taint effects. When specified, + allowed values are NoSchedule, PreferNoSchedule and + NoExecute. + type: string + key: + description: Key is the taint key that the toleration + applies to. Empty means match all taint keys. If the + key is empty, operator must be Exists; this combination + means to match all values and all keys. + type: string + operator: + description: Operator represents a key's relationship + to the value. Valid operators are Exists and Equal. + Defaults to Equal. Exists is equivalent to wildcard + for value, so that a pod can tolerate all taints of + a particular category. + type: string + tolerationSeconds: + description: TolerationSeconds represents the period of + time the toleration (which must be of effect NoExecute, + otherwise this field is ignored) tolerates the taint. + By default, it is not set, which means tolerate the + taint forever (do not evict). Zero and negative values + will be treated as 0 (evict immediately) by the system. + format: int64 + type: integer + value: + description: Value is the taint value the toleration matches + to. If the operator is Exists, the value should be empty, + otherwise just a regular string. + type: string + type: object + type: array + x-kubernetes-list-type: atomic + topologySpreadConstraints: + description: TopologySpreadConstraints describes how a group + of pods ought to spread across topology domains. Scheduler + will schedule pods in a way which abides by the constraints. + All topologySpreadConstraints are ANDed. + items: + description: TopologySpreadConstraint specifies how to spread + matching pods among the given topology. + properties: + labelSelector: + description: LabelSelector is used to find matching pods. + Pods that match this label selector are counted to determine + the number of pods in their corresponding topology domain. + properties: + matchExpressions: + description: matchExpressions is a list of label selector + requirements. The requirements are ANDed. + items: + description: A label selector requirement is a selector + that contains values, a key, and an operator that + relates the key and values. + properties: + key: + description: key is the label key that the selector + applies to. + type: string + operator: + description: operator represents a key's relationship + to a set of values. Valid operators are In, + NotIn, Exists and DoesNotExist. + type: string + values: + description: values is an array of string values. + If the operator is In or NotIn, the values + array must be non-empty. If the operator is + Exists or DoesNotExist, the values array must + be empty. This array is replaced during a + strategic merge patch. + items: + type: string + type: array + x-kubernetes-list-type: atomic + required: + - key + - operator + type: object + type: array + x-kubernetes-list-type: atomic + matchLabels: + additionalProperties: + type: string + description: matchLabels is a map of {key,value} pairs. + A single {key,value} in the matchLabels map is equivalent + to an element of matchExpressions, whose key field + is "key", the operator is "In", and the values array + contains only "value". The requirements are ANDed. + type: object + type: object + x-kubernetes-map-type: atomic + matchLabelKeys: + description: "MatchLabelKeys is a set of pod label keys + to select the pods over which spreading will be calculated. + The keys are used to lookup values from the incoming + pod labels, those key-value labels are ANDed with labelSelector + to select the group of existing pods over which spreading + will be calculated for the incoming pod. 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)." + items: + type: string + type: array + x-kubernetes-list-type: atomic + maxSkew: + description: 'MaxSkew describes the degree to which pods + may be unevenly distributed. When `whenUnsatisfiable=DoNotSchedule`, + it is the maximum permitted difference between the number + of matching pods in the target topology and the global + minimum. The global minimum is the minimum number of + matching pods in an eligible domain or zero if the number + of eligible domains is less than MinDomains. For example, + in a 3-zone cluster, MaxSkew is set to 1, and pods with + the same labelSelector spread as 2/2/1: In this case, + the global minimum is 1. | zone1 | zone2 | zone3 | | P + P | P P | P | - if MaxSkew is 1, incoming pod + can only be scheduled to zone3 to become 2/2/2; scheduling + it onto zone1(zone2) would make the ActualSkew(3-1) + on zone1(zone2) violate MaxSkew(1). - if MaxSkew is + 2, incoming pod can be scheduled onto any zone. When + `whenUnsatisfiable=ScheduleAnyway`, it is used to give + higher precedence to topologies that satisfy it. It''s + a required field. Default value is 1 and 0 is not allowed.' + format: int32 + type: integer + minDomains: + description: "MinDomains indicates a minimum number of + eligible domains. When the number of eligible domains + with matching topology keys is less than minDomains, + Pod Topology Spread treats \"global minimum\" as 0, + and then the calculation of Skew is performed. And when + the number of eligible domains with matching topology + keys equals or greater than minDomains, this value has + no effect on scheduling. As a result, when the number + of eligible domains is less than minDomains, scheduler + won't schedule more than maxSkew Pods to those domains. + If value is nil, the constraint behaves as if MinDomains + is equal to 1. Valid values are integers greater than + 0. When value is not nil, WhenUnsatisfiable must be + DoNotSchedule. \n For example, in a 3-zone cluster, + MaxSkew is set to 2, MinDomains is set to 5 and pods + with the same labelSelector spread as 2/2/2: | zone1 + | zone2 | zone3 | | P P | P P | P P | The number + of domains is less than 5(MinDomains), so \"global minimum\" + is treated as 0. In this situation, new pod with the + same labelSelector cannot be scheduled, because computed + skew will be 3(3 - 0) if new Pod is scheduled to any + of the three zones, it will violate MaxSkew." + format: int32 + type: integer + nodeAffinityPolicy: + description: "NodeAffinityPolicy indicates how we will + treat Pod's nodeAffinity/nodeSelector when calculating + pod topology spread skew. Options are: - Honor: only + nodes matching nodeAffinity/nodeSelector are included + in the calculations. - Ignore: nodeAffinity/nodeSelector + are ignored. All nodes are included in the calculations. + \n If this value is nil, the behavior is equivalent + to the Honor policy. This is a beta-level feature default + enabled by the NodeInclusionPolicyInPodTopologySpread + feature flag." + type: string + nodeTaintsPolicy: + description: "NodeTaintsPolicy indicates how we will treat + node taints when calculating pod topology spread skew. + Options are: - Honor: nodes without taints, along with + tainted nodes for which the incoming pod has a toleration, + are included. - Ignore: node taints are ignored. All + nodes are included. \n If this value is nil, the behavior + is equivalent to the Ignore policy. This is a beta-level + feature default enabled by the NodeInclusionPolicyInPodTopologySpread + feature flag." + type: string + topologyKey: + description: TopologyKey is the key of node labels. Nodes + that have a label with this key and identical values + are considered to be in the same topology. We consider + each as a "bucket", and try to put balanced + number of pods into each bucket. We define a domain + as a particular instance of a topology. Also, we define + an eligible domain as a domain whose nodes meet the + requirements of nodeAffinityPolicy and nodeTaintsPolicy. + e.g. If TopologyKey is "kubernetes.io/hostname", each + Node is a domain of that topology. And, if TopologyKey + is "topology.kubernetes.io/zone", each zone is a domain + of that topology. It's a required field. + type: string + whenUnsatisfiable: + description: 'WhenUnsatisfiable indicates how to deal + with a pod if it doesn''t satisfy the spread constraint. + - DoNotSchedule (default) tells the scheduler not to + schedule it. - ScheduleAnyway tells the scheduler to + schedule the pod in any location, but giving higher + precedence to topologies that would help reduce the + skew. A constraint is considered "Unsatisfiable" for + an incoming pod if and only if every possible node assignment + for that pod would violate "MaxSkew" on some topology. + For example, in a 3-zone cluster, MaxSkew is set to + 1, and pods with the same labelSelector spread as 3/1/1: + | zone1 | zone2 | zone3 | | P P P | P | P | + If WhenUnsatisfiable is set to DoNotSchedule, incoming + pod can only be scheduled to zone2(zone3) to become + 3/2/1(3/1/2) as ActualSkew(2-1) on zone2(zone3) satisfies + MaxSkew(1). In other words, the cluster can still be + imbalanced, but scheduler won''t make it *more* imbalanced. + It''s a required field.' + type: string + required: + - maxSkew + - topologyKey + - whenUnsatisfiable + type: object + type: array + x-kubernetes-list-map-keys: + - topologyKey + - whenUnsatisfiable + x-kubernetes-list-type: map + volumes: + description: 'List of volumes that can be mounted by containers + belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes' + items: + description: Volume represents a named volume in a pod that + may be accessed by any container in the pod. + properties: + awsElasticBlockStore: + description: 'awsElasticBlockStore represents an AWS Disk + resource that is attached to a kubelet''s host machine + and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' + properties: + fsType: + description: 'fsType is the filesystem type of the + volume that you want to mount. Tip: Ensure that + the filesystem type is supported by the host operating + system. Examples: "ext4", "xfs", "ntfs". Implicitly + inferred to be "ext4" if unspecified. More info: + https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore + TODO: how do we prevent errors in the filesystem + from compromising the machine' + type: string + partition: + description: 'partition is the partition in the volume + that you want to mount. If omitted, the default + is to mount by volume name. Examples: For volume + /dev/sda1, you specify the partition as "1". Similarly, + the volume partition for /dev/sda is "0" (or you + can leave the property empty).' + format: int32 + type: integer + readOnly: + description: 'readOnly value true will force the readOnly + setting in VolumeMounts. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' + type: boolean + volumeID: + description: 'volumeID is unique ID of the persistent + disk resource in AWS (Amazon EBS volume). More info: + https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' + type: string + required: + - volumeID + type: object + azureDisk: + description: azureDisk represents an Azure Data Disk mount + on the host and bind mount to the pod. + properties: + cachingMode: + description: 'cachingMode is the Host Caching mode: + None, Read Only, Read Write.' + type: string + diskName: + description: diskName is the Name of the data disk + in the blob storage + type: string + diskURI: + description: diskURI is the URI of data disk in the + blob storage + type: string + fsType: + description: fsType is Filesystem type to mount. Must + be a filesystem type supported by the host operating + system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred + to be "ext4" if unspecified. + type: string + kind: + description: 'kind expected values are Shared: multiple + blob disks per storage account Dedicated: single + blob disk per storage account Managed: azure managed + data disk (only in managed availability set). defaults + to shared' + type: string + readOnly: + description: readOnly Defaults to false (read/write). + ReadOnly here will force the ReadOnly setting in + VolumeMounts. + type: boolean + required: + - diskName + - diskURI + type: object + azureFile: + description: azureFile represents an Azure File Service + mount on the host and bind mount to the pod. + properties: + readOnly: + description: readOnly defaults to false (read/write). + ReadOnly here will force the ReadOnly setting in + VolumeMounts. + type: boolean + secretName: + description: secretName is the name of secret that + contains Azure Storage Account Name and Key + type: string + shareName: + description: shareName is the azure share Name + type: string + required: + - secretName + - shareName + type: object + cephfs: + description: cephFS represents a Ceph FS mount on the + host that shares a pod's lifetime + properties: + monitors: + description: 'monitors is Required: Monitors is a + collection of Ceph monitors More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' + items: + type: string + type: array + x-kubernetes-list-type: atomic + path: + description: 'path is Optional: Used as the mounted + root, rather than the full Ceph tree, default is + /' + type: string + readOnly: + description: 'readOnly is Optional: Defaults to false + (read/write). ReadOnly here will force the ReadOnly + setting in VolumeMounts. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' + type: boolean + secretFile: + description: 'secretFile is Optional: SecretFile is + the path to key ring for User, default is /etc/ceph/user.secret + More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' + type: string + secretRef: + description: 'secretRef is Optional: SecretRef is + reference to the authentication secret for User, + default is empty. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' + properties: + name: + default: "" + 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.' + type: string + type: object + x-kubernetes-map-type: atomic + user: + description: 'user is optional: User is the rados + user name, default is admin More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' + type: string + required: + - monitors + type: object + cinder: + description: 'cinder represents a cinder volume attached + and mounted on kubelets host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md' + properties: + fsType: + description: 'fsType is the filesystem type to mount. + Must be a filesystem type supported by the host + operating system. Examples: "ext4", "xfs", "ntfs". + Implicitly inferred to be "ext4" if unspecified. + More info: https://examples.k8s.io/mysql-cinder-pd/README.md' + type: string + readOnly: + description: 'readOnly defaults to false (read/write). + ReadOnly here will force the ReadOnly setting in + VolumeMounts. More info: https://examples.k8s.io/mysql-cinder-pd/README.md' + type: boolean + secretRef: + description: 'secretRef is optional: points to a secret + object containing parameters used to connect to + OpenStack.' + properties: + name: + default: "" + 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.' + type: string + type: object + x-kubernetes-map-type: atomic + volumeID: + description: 'volumeID used to identify the volume + in cinder. More info: https://examples.k8s.io/mysql-cinder-pd/README.md' + type: string + required: + - volumeID + type: object + configMap: + description: configMap represents a configMap that should + populate this volume + properties: + defaultMode: + description: 'defaultMode is optional: mode bits used + to set permissions on created files by default. + Must be an octal value between 0000 and 0777 or + a decimal value between 0 and 511. YAML accepts + both octal and decimal values, JSON requires decimal + values for mode bits. Defaults to 0644. Directories + within the path are not affected by this setting. + This might be in conflict with other options that + affect the file mode, like fsGroup, and the result + can be other mode bits set.' + format: int32 + type: integer + items: + description: items if unspecified, each key-value + pair in the Data field of the referenced ConfigMap + will be projected into the volume as a file whose + name is the key and content is the value. If specified, + the listed keys will be projected into the specified + paths, and unlisted keys will not be present. If + a key is specified which is not present in the ConfigMap, + the volume setup will error unless it is marked + optional. Paths must be relative and may not contain + the '..' path or start with '..'. + items: + description: Maps a string key to a path within + a volume. + properties: + key: + description: key is the key to project. + type: string + mode: + description: 'mode is Optional: mode bits used + to set permissions on this file. Must be an + octal value between 0000 and 0777 or a decimal + value between 0 and 511. YAML accepts both + octal and decimal values, JSON requires decimal + values for mode bits. If not specified, the + volume defaultMode will be used. This might + be in conflict with other options that affect + the file mode, like fsGroup, and the result + can be other mode bits set.' + format: int32 + type: integer + path: + description: path is the relative path of the + file to map the key to. May not be an absolute + path. May not contain the path element '..'. + May not start with the string '..'. + type: string + required: + - key + - path + type: object + type: array + x-kubernetes-list-type: atomic + name: + default: "" + 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.' + type: string + optional: + description: optional specify whether the ConfigMap + or its keys must be defined + type: boolean + type: object + x-kubernetes-map-type: atomic + csi: + description: csi (Container Storage Interface) represents + ephemeral storage that is handled by certain external + CSI drivers (Beta feature). + properties: + driver: + description: driver is the name of the CSI driver + that handles this volume. Consult with your admin + for the correct name as registered in the cluster. + type: string + fsType: + description: fsType to mount. Ex. "ext4", "xfs", "ntfs". + If not provided, the empty value is passed to the + associated CSI driver which will determine the default + filesystem to apply. + type: string + nodePublishSecretRef: + description: nodePublishSecretRef is a reference to + the secret object containing sensitive information + to pass to the CSI driver to complete the CSI NodePublishVolume + and NodeUnpublishVolume calls. This field is optional, + and may be empty if no secret is required. If the + secret object contains more than one secret, all + secret references are passed. + properties: + name: + default: "" + 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.' + type: string + type: object + x-kubernetes-map-type: atomic + readOnly: + description: readOnly specifies a read-only configuration + for the volume. Defaults to false (read/write). + type: boolean + volumeAttributes: + additionalProperties: + type: string + description: volumeAttributes stores driver-specific + properties that are passed to the CSI driver. Consult + your driver's documentation for supported values. + type: object + required: + - driver + type: object + downwardAPI: + description: downwardAPI represents downward API about + the pod that should populate this volume + properties: + defaultMode: + description: 'Optional: mode bits to use on created + files by default. Must be a Optional: mode bits + used to set permissions on created files by default. + Must be an octal value between 0000 and 0777 or + a decimal value between 0 and 511. YAML accepts + both octal and decimal values, JSON requires decimal + values for mode bits. Defaults to 0644. Directories + within the path are not affected by this setting. + This might be in conflict with other options that + affect the file mode, like fsGroup, and the result + can be other mode bits set.' + format: int32 + type: integer + items: + description: Items is a list of downward API volume + file + items: + description: DownwardAPIVolumeFile represents information + to create the file containing the pod field + properties: + fieldRef: + description: 'Required: Selects a field of the + pod: only annotations, labels, name, namespace + and uid are supported.' + properties: + apiVersion: + description: Version of the schema the FieldPath + is written in terms of, defaults to "v1". + type: string + fieldPath: + description: Path of the field to select + in the specified API version. + type: string + required: + - fieldPath + type: object + x-kubernetes-map-type: atomic + mode: + description: 'Optional: mode bits used to set + permissions on this file, must be an octal + value between 0000 and 0777 or a decimal value + between 0 and 511. YAML accepts both octal + and decimal values, JSON requires decimal + values for mode bits. If not specified, the + volume defaultMode will be used. This might + be in conflict with other options that affect + the file mode, like fsGroup, and the result + can be other mode bits set.' + format: int32 + type: integer + path: + description: 'Required: Path is the relative + path name of the file to be created. Must + not be absolute or contain the ''..'' path. + Must be utf-8 encoded. The first item of the + relative path must not start with ''..''' + type: string + resourceFieldRef: + description: 'Selects a resource of the container: + only resources limits and requests (limits.cpu, + limits.memory, requests.cpu and requests.memory) + are currently supported.' + properties: + containerName: + description: 'Container name: required for + volumes, optional for env vars' + type: string + divisor: + anyOf: + - type: integer + - type: string + description: Specifies the output format + of the exposed resources, defaults to + "1" + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + description: 'Required: resource to select' + type: string + required: + - resource + type: object + x-kubernetes-map-type: atomic + required: + - path + type: object + type: array + x-kubernetes-list-type: atomic + type: object + emptyDir: + description: 'emptyDir represents a temporary directory + that shares a pod''s lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' + properties: + medium: + description: 'medium represents what type of storage + medium should back this directory. The default is + "" which means to use the node''s default medium. + Must be an empty string (default) or Memory. More + info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' + type: string + sizeLimit: + anyOf: + - type: integer + - type: string + description: 'sizeLimit is the total amount of local + storage required for this EmptyDir volume. The size + limit is also applicable for memory medium. The + maximum usage on memory medium EmptyDir would be + the minimum value between the SizeLimit specified + here and the sum of memory limits of all containers + in a pod. The default is nil which means that the + limit is undefined. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + ephemeral: + description: "ephemeral represents a volume that is handled + by a cluster storage driver. The volume's lifecycle + is tied to the pod that defines it - it will be created + before the pod starts, and deleted when the pod is removed. + \n Use this if: a) the volume is only needed while the + pod runs, b) features of normal volumes like restoring + from snapshot or capacity tracking are needed, c) the + storage driver is specified through a storage class, + and d) the storage driver supports dynamic volume provisioning + through a PersistentVolumeClaim (see EphemeralVolumeSource + for more information on the connection between this + volume type and PersistentVolumeClaim). \n Use PersistentVolumeClaim + or one of the vendor-specific APIs for volumes that + persist for longer than the lifecycle of an individual + pod. \n Use CSI for light-weight local ephemeral volumes + if the CSI driver is meant to be used that way - see + the documentation of the driver for more information. + \n A pod can use both types of ephemeral volumes and + persistent volumes at the same time." + properties: + volumeClaimTemplate: + description: "Will be used to create a stand-alone + PVC to provision the volume. The pod in which this + EphemeralVolumeSource is embedded will be the owner + of the PVC, i.e. the PVC will be deleted together + with the pod. The name of the PVC will be `-` where `` is the + name from the `PodSpec.Volumes` array entry. Pod + validation will reject the pod if the concatenated + name is not valid for a PVC (for example, too long). + \n An existing PVC with that name that is not owned + by the pod will *not* be used for the pod to avoid + using an unrelated volume by mistake. Starting the + pod is then blocked until the unrelated PVC is removed. + If such a pre-created PVC is meant to be used by + the pod, the PVC has to updated with an owner reference + to the pod once the pod exists. Normally this should + not be necessary, but it may be useful when manually + reconstructing a broken cluster. \n This field is + read-only and no changes will be made by Kubernetes + to the PVC after it has been created. \n Required, + must not be nil." + properties: + metadata: + description: May contain labels and annotations + that will be copied into the PVC when creating + it. No other fields are allowed and will be + rejected during validation. + properties: + annotations: + additionalProperties: + type: string + type: object + finalizers: + items: + type: string + type: array + labels: + additionalProperties: + type: string + type: object + name: + type: string + namespace: + type: string + type: object + spec: + description: The specification for the PersistentVolumeClaim. + The entire content is copied unchanged into + the PVC that gets created from this template. + The same fields as in a PersistentVolumeClaim + are also valid here. + properties: + accessModes: + description: 'accessModes contains the desired + access modes the volume should have. More + info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1' + items: + type: string + type: array + x-kubernetes-list-type: atomic + dataSource: + description: 'dataSource field can be used + to specify either: * An existing VolumeSnapshot + object (snapshot.storage.k8s.io/VolumeSnapshot) + * An existing PVC (PersistentVolumeClaim) + If the provisioner or an external controller + can support the specified data source, it + will create a new volume based on the contents + of the specified data source. 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.' + properties: + apiGroup: + description: APIGroup is the group for + the resource being referenced. If APIGroup + is not specified, the specified Kind + must be in the core API group. For any + other third-party types, APIGroup is + required. + type: string + kind: + description: Kind is the type of resource + being referenced + type: string + name: + description: Name is the name of resource + being referenced + type: string + required: + - kind + - name + type: object + x-kubernetes-map-type: atomic + dataSourceRef: + description: 'dataSourceRef specifies the + object from which to populate the volume + with data, if a non-empty volume is desired. + This may be any 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.' + properties: + apiGroup: + description: APIGroup is the group for + the resource being referenced. If APIGroup + is not specified, the specified Kind + must be in the core API group. For any + other third-party types, APIGroup is + required. + type: string + kind: + description: Kind is the type of resource + being referenced + type: string + name: + description: Name is the name of resource + being referenced + type: string + namespace: + 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. + type: string + required: + - kind + - name + type: object + resources: + description: 'resources represents the minimum + resources the volume should have. If RecoverVolumeExpansionFailure + feature is enabled users are allowed to + specify resource requirements that are lower + than previous value but must still be higher + than capacity recorded in the status field + of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources' + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + description: 'Limits describes the maximum + amount of compute resources allowed. + More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + description: 'Requests describes the minimum + amount of compute resources required. + If Requests is omitted for a container, + it defaults to Limits if that is explicitly + specified, otherwise to an implementation-defined + value. Requests cannot exceed Limits. + More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' + type: object + type: object + selector: + description: selector is a label query over + volumes to consider for binding. + properties: + matchExpressions: + description: matchExpressions is a list + of label selector requirements. The + requirements are ANDed. + items: + description: A label selector requirement + is a selector that contains values, + a key, and an operator that relates + the key and values. + properties: + key: + description: key is the label key + that the selector applies to. + type: string + operator: + description: operator represents + a key's relationship to a set + of values. Valid operators are + In, NotIn, Exists and DoesNotExist. + type: string + values: + description: values is an array + of string values. If the operator + is In or NotIn, the values array + must be non-empty. If the operator + is Exists or DoesNotExist, the + values array must be empty. This + array is replaced during a strategic + merge patch. + items: + type: string + type: array + x-kubernetes-list-type: atomic + required: + - key + - operator + type: object + type: array + x-kubernetes-list-type: atomic + matchLabels: + additionalProperties: + type: string + description: matchLabels is a map of {key,value} + pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, + whose key field is "key", the operator + is "In", and the values array contains + only "value". The requirements are ANDed. + type: object + type: object + x-kubernetes-map-type: atomic + storageClassName: + description: 'storageClassName is the name + of the StorageClass required by the claim. + More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1' + type: string + volumeAttributesClassName: + description: 'volumeAttributesClassName may + be used to set the VolumeAttributesClass + used by this claim. If specified, the CSI + driver will create or update the volume + with the attributes defined in the corresponding + VolumeAttributesClass. This has a different + purpose than storageClassName, it can be + changed after the claim is created. An empty + string value means that no VolumeAttributesClass + will be applied to the claim but it''s not + allowed to reset this field to empty string + once it is set. If unspecified and the PersistentVolumeClaim + is unbound, the default VolumeAttributesClass + will be set by the persistentvolume controller + if it exists. If the resource referred to + by volumeAttributesClass does not exist, + this PersistentVolumeClaim will be set to + a Pending state, as reflected by the modifyVolumeStatus + field, until such as a resource exists. + More info: https://kubernetes.io/docs/concepts/storage/volume-attributes-classes/ + (Alpha) Using this field requires the VolumeAttributesClass + feature gate to be enabled.' + type: string + volumeMode: + description: volumeMode defines what type + of volume is required by the claim. Value + of Filesystem is implied when not included + in claim spec. + type: string + volumeName: + description: volumeName is the binding reference + to the PersistentVolume backing this claim. + type: string + type: object + required: + - spec + type: object + type: object + fc: + description: fc represents a Fibre Channel resource that + is attached to a kubelet's host machine and then exposed + to the pod. + properties: + fsType: + description: 'fsType is the filesystem type to mount. + Must be a filesystem type supported by the host + operating system. Ex. "ext4", "xfs", "ntfs". Implicitly + inferred to be "ext4" if unspecified. TODO: how + do we prevent errors in the filesystem from compromising + the machine' + type: string + lun: + description: 'lun is Optional: FC target lun number' + format: int32 + type: integer + readOnly: + description: 'readOnly is Optional: Defaults to false + (read/write). ReadOnly here will force the ReadOnly + setting in VolumeMounts.' + type: boolean + targetWWNs: + description: 'targetWWNs is Optional: FC target worldwide + names (WWNs)' + items: + type: string + type: array + x-kubernetes-list-type: atomic + wwids: + description: 'wwids Optional: FC volume world wide + identifiers (wwids) Either wwids or combination + of targetWWNs and lun must be set, but not both + simultaneously.' + items: + type: string + type: array + x-kubernetes-list-type: atomic + type: object + flexVolume: + description: flexVolume represents a generic volume resource + that is provisioned/attached using an exec based plugin. + properties: + driver: + description: driver is the name of the driver to use + for this volume. + type: string + fsType: + description: fsType is the filesystem type to mount. + Must be a filesystem type supported by the host + operating system. Ex. "ext4", "xfs", "ntfs". The + default filesystem depends on FlexVolume script. + type: string + options: + additionalProperties: + type: string + description: 'options is Optional: this field holds + extra command options if any.' + type: object + readOnly: + description: 'readOnly is Optional: defaults to false + (read/write). ReadOnly here will force the ReadOnly + setting in VolumeMounts.' + type: boolean + secretRef: + description: 'secretRef is Optional: secretRef is + reference to the secret object containing sensitive + information to pass to the plugin scripts. This + may be empty if no secret object is specified. If + the secret object contains more than one secret, + all secrets are passed to the plugin scripts.' + properties: + name: + default: "" + 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.' + type: string + type: object + x-kubernetes-map-type: atomic + required: + - driver + type: object + flocker: + description: flocker represents a Flocker volume attached + to a kubelet's host machine. This depends on the Flocker + control service being running + properties: + datasetName: + description: datasetName is Name of the dataset stored + as metadata -> name on the dataset for Flocker should + be considered as deprecated + type: string + datasetUUID: + description: datasetUUID is the UUID of the dataset. + This is unique identifier of a Flocker dataset + type: string + type: object + gcePersistentDisk: + description: 'gcePersistentDisk represents a GCE Disk + resource that is attached to a kubelet''s host machine + and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' + properties: + fsType: + description: 'fsType is filesystem type of the volume + that you want to mount. Tip: Ensure that the filesystem + type is supported by the host operating system. + Examples: "ext4", "xfs", "ntfs". Implicitly inferred + to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk + TODO: how do we prevent errors in the filesystem + from compromising the machine' + type: string + partition: + description: 'partition is the partition in the volume + that you want to mount. If omitted, the default + is to mount by volume name. Examples: For volume + /dev/sda1, you specify the partition as "1". Similarly, + the volume partition for /dev/sda is "0" (or you + can leave the property empty). More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' + format: int32 + type: integer + pdName: + description: 'pdName is unique name of the PD resource + in GCE. Used to identify the disk in GCE. More info: + https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' + type: string + readOnly: + description: 'readOnly here will force the ReadOnly + setting in VolumeMounts. Defaults to false. More + info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' + type: boolean + required: + - pdName + type: object + gitRepo: + description: 'gitRepo represents a git repository at a + particular revision. DEPRECATED: GitRepo is deprecated. + To provision a container with a git repo, mount an EmptyDir + into an InitContainer that clones the repo using git, + then mount the EmptyDir into the Pod''s container.' + properties: + directory: + description: directory is the target directory name. + Must not contain or start with '..'. If '.' is + supplied, the volume directory will be the git repository. Otherwise, + if specified, the volume will contain the git repository + in the subdirectory with the given name. + type: string + repository: + description: repository is the URL + type: string + revision: + description: revision is the commit hash for the specified + revision. + type: string + required: + - repository + type: object + glusterfs: + description: 'glusterfs represents a Glusterfs mount on + the host that shares a pod''s lifetime. More info: https://examples.k8s.io/volumes/glusterfs/README.md' + properties: + endpoints: + description: 'endpoints is the endpoint name that + details Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' + type: string + path: + description: 'path is the Glusterfs volume path. More + info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' + type: string + readOnly: + description: 'readOnly here will force the Glusterfs + volume to be mounted with read-only permissions. + Defaults to false. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' + type: boolean + required: + - endpoints + - path + type: object + hostPath: + description: 'hostPath represents a pre-existing file + or directory on the host machine that is directly exposed + to the container. This is generally used for system + agents or other privileged things that are allowed to + see the host machine. Most containers will NOT need + this. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath + --- TODO(jonesdl) We need to restrict who can use host + directory mounts and who can/can not mount host directories + as read/write.' + properties: + path: + description: 'path of the directory on the host. If + the path is a symlink, it will follow the link to + the real path. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath' + type: string + type: + description: 'type for HostPath Volume Defaults to + "" More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath' + type: string + required: + - path + type: object + iscsi: + description: 'iscsi represents an ISCSI Disk resource + that is attached to a kubelet''s host machine and then + exposed to the pod. More info: https://examples.k8s.io/volumes/iscsi/README.md' + properties: + chapAuthDiscovery: + description: chapAuthDiscovery defines whether support + iSCSI Discovery CHAP authentication + type: boolean + chapAuthSession: + description: chapAuthSession defines whether support + iSCSI Session CHAP authentication + type: boolean + fsType: + description: 'fsType is the filesystem type of the + volume that you want to mount. Tip: Ensure that + the filesystem type is supported by the host operating + system. Examples: "ext4", "xfs", "ntfs". Implicitly + inferred to be "ext4" if unspecified. More info: + https://kubernetes.io/docs/concepts/storage/volumes#iscsi + TODO: how do we prevent errors in the filesystem + from compromising the machine' + type: string + initiatorName: + description: initiatorName is the custom iSCSI Initiator + Name. If initiatorName is specified with iscsiInterface + simultaneously, new iSCSI interface : will be created for the connection. + type: string + iqn: + description: iqn is the target iSCSI Qualified Name. + type: string + iscsiInterface: + description: iscsiInterface is the interface Name + that uses an iSCSI transport. Defaults to 'default' + (tcp). + type: string + lun: + description: lun represents iSCSI Target Lun number. + format: int32 + type: integer + portals: + description: portals is the iSCSI Target Portal List. + The portal is either an IP or ip_addr:port if the + port is other than default (typically TCP ports + 860 and 3260). + items: + type: string + type: array + x-kubernetes-list-type: atomic + readOnly: + description: readOnly here will force the ReadOnly + setting in VolumeMounts. Defaults to false. + type: boolean + secretRef: + description: secretRef is the CHAP Secret for iSCSI + target and initiator authentication + properties: + name: + default: "" + 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.' + type: string + type: object + x-kubernetes-map-type: atomic + targetPortal: + description: targetPortal is iSCSI Target Portal. + The Portal is either an IP or ip_addr:port if the + port is other than default (typically TCP ports + 860 and 3260). + type: string + required: + - iqn + - lun + - targetPortal + type: object + name: + description: 'name of the volume. Must be a DNS_LABEL + and unique within the pod. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' + type: string + nfs: + description: 'nfs represents an NFS mount on the host + that shares a pod''s lifetime More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' + properties: + path: + description: 'path that is exported by the NFS server. + More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' + type: string + readOnly: + description: 'readOnly here will force the NFS export + to be mounted with read-only permissions. Defaults + to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' + type: boolean + server: + description: 'server is the hostname or IP address + of the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' + type: string + required: + - path + - server + type: object + persistentVolumeClaim: + description: 'persistentVolumeClaimVolumeSource represents + a reference to a PersistentVolumeClaim in the same namespace. + More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' + properties: + claimName: + description: 'claimName is the name of a PersistentVolumeClaim + in the same namespace as the pod using this volume. + More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' + type: string + readOnly: + description: readOnly Will force the ReadOnly setting + in VolumeMounts. Default false. + type: boolean + required: + - claimName + type: object + photonPersistentDisk: + description: photonPersistentDisk represents a PhotonController + persistent disk attached and mounted on kubelets host + machine + properties: + fsType: + description: fsType is the filesystem type to mount. + Must be a filesystem type supported by the host + operating system. Ex. "ext4", "xfs", "ntfs". Implicitly + inferred to be "ext4" if unspecified. + type: string + pdID: + description: pdID is the ID that identifies Photon + Controller persistent disk + type: string + required: + - pdID + type: object + portworxVolume: + description: portworxVolume represents a portworx volume + attached and mounted on kubelets host machine + properties: + fsType: + description: fSType represents the filesystem type + to mount Must be a filesystem type supported by + the host operating system. Ex. "ext4", "xfs". Implicitly + inferred to be "ext4" if unspecified. + type: string + readOnly: + description: readOnly defaults to false (read/write). + ReadOnly here will force the ReadOnly setting in + VolumeMounts. + type: boolean + volumeID: + description: volumeID uniquely identifies a Portworx + volume + type: string + required: + - volumeID + type: object + projected: + description: projected items for all in one resources + secrets, configmaps, and downward API + properties: + defaultMode: + description: defaultMode are the mode bits used to + set permissions on created files by default. Must + be an octal value between 0000 and 0777 or a decimal + value between 0 and 511. YAML accepts both octal + and decimal values, JSON requires decimal values + for mode bits. Directories within the path are not + affected by this setting. This might be in conflict + with other options that affect the file mode, like + fsGroup, and the result can be other mode bits set. + format: int32 + type: integer + sources: + description: sources is the list of volume projections + items: + description: Projection that may be projected along + with other supported volume types + properties: + clusterTrustBundle: + 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." + properties: + labelSelector: + 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". + properties: + matchExpressions: + description: matchExpressions is a list + of label selector requirements. The + requirements are ANDed. + items: + description: A label selector requirement + is a selector that contains values, + a key, and an operator that relates + the key and values. + properties: + key: + description: key is the label + key that the selector applies + to. + type: string + operator: + description: operator represents + a key's relationship to a set + of values. Valid operators are + In, NotIn, Exists and DoesNotExist. + type: string + values: + description: values is an array + of string values. If the operator + is In or NotIn, the values array + must be non-empty. If the operator + is Exists or DoesNotExist, the + values array must be empty. + This array is replaced during + a strategic merge patch. + items: + type: string + type: array + x-kubernetes-list-type: atomic + required: + - key + - operator + type: object + type: array + x-kubernetes-list-type: atomic + matchLabels: + additionalProperties: + type: string + description: matchLabels is a map of + {key,value} pairs. A single {key,value} + in the matchLabels map is equivalent + to an element of matchExpressions, + whose key field is "key", the operator + is "In", and the values array contains + only "value". The requirements are + ANDed. + type: object + type: object + x-kubernetes-map-type: atomic + name: + description: Select a single ClusterTrustBundle + by object name. Mutually-exclusive with + signerName and labelSelector. + type: string + optional: + 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. + type: boolean + path: + description: Relative path from the volume + root to write the bundle. + type: string + signerName: + description: Select all ClusterTrustBundles + that match this signer name. Mutually-exclusive + with name. The contents of all selected + ClusterTrustBundles will be unified and + deduplicated. + type: string + required: + - path + type: object + configMap: + description: configMap information about the + configMap data to project + properties: + items: + description: items if unspecified, each + key-value pair in the Data field of the + referenced ConfigMap will be projected + into the volume as a file whose name is + the key and content is the value. If specified, + the listed keys will be projected into + the specified paths, and unlisted keys + will not be present. If a key is specified + which is not present in the ConfigMap, + the volume setup will error unless it + is marked optional. Paths must be relative + and may not contain the '..' path or start + with '..'. + items: + description: Maps a string key to a path + within a volume. + properties: + key: + description: key is the key to project. + type: string + mode: + description: 'mode is Optional: mode + bits used to set permissions on + this file. Must be an octal value + between 0000 and 0777 or a decimal + value between 0 and 511. YAML accepts + both octal and decimal values, JSON + requires decimal values for mode + bits. If not specified, the volume + defaultMode will be used. This might + be in conflict with other options + that affect the file mode, like + fsGroup, and the result can be other + mode bits set.' + format: int32 + type: integer + path: + description: path is the relative + path of the file to map the key + to. May not be an absolute path. + May not contain the path element + '..'. May not start with the string + '..'. + type: string + required: + - key + - path + type: object + type: array + x-kubernetes-list-type: atomic + name: + default: "" + 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.' + type: string + optional: + description: optional specify whether the + ConfigMap or its keys must be defined + type: boolean + type: object + x-kubernetes-map-type: atomic + downwardAPI: + description: downwardAPI information about the + downwardAPI data to project + properties: + items: + description: Items is a list of DownwardAPIVolume + file + items: + description: DownwardAPIVolumeFile represents + information to create the file containing + the pod field + properties: + fieldRef: + description: 'Required: Selects a + field of the pod: only annotations, + labels, name, namespace and uid + are supported.' + properties: + apiVersion: + description: Version of the schema + the FieldPath is written in + terms of, defaults to "v1". + type: string + fieldPath: + description: Path of the field + to select in the specified API + version. + type: string + required: + - fieldPath + type: object + x-kubernetes-map-type: atomic + mode: + description: 'Optional: mode bits + used to set permissions on this + file, must be an octal value between + 0000 and 0777 or a decimal value + between 0 and 511. YAML accepts + both octal and decimal values, JSON + requires decimal values for mode + bits. If not specified, the volume + defaultMode will be used. This might + be in conflict with other options + that affect the file mode, like + fsGroup, and the result can be other + mode bits set.' + format: int32 + type: integer + path: + description: 'Required: Path is the + relative path name of the file to + be created. Must not be absolute + or contain the ''..'' path. Must + be utf-8 encoded. The first item + of the relative path must not start + with ''..''' + type: string + resourceFieldRef: + description: 'Selects a resource of + the container: only resources limits + and requests (limits.cpu, limits.memory, + requests.cpu and requests.memory) + are currently supported.' + properties: + containerName: + description: 'Container name: + required for volumes, optional + for env vars' + type: string + divisor: + anyOf: + - type: integer + - type: string + description: Specifies the output + format of the exposed resources, + defaults to "1" + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + description: 'Required: resource + to select' + type: string + required: + - resource + type: object + x-kubernetes-map-type: atomic + required: + - path + type: object + type: array + x-kubernetes-list-type: atomic + type: object + secret: + description: secret information about the secret + data to project + properties: + items: + description: items if unspecified, each + key-value pair in the Data field of the + referenced Secret will be projected into + the volume as a file whose name is the + key and content is the value. If specified, + the listed keys will be projected into + the specified paths, and unlisted keys + will not be present. If a key is specified + which is not present in the Secret, the + volume setup will error unless it is marked + optional. Paths must be relative and may + not contain the '..' path or start with + '..'. + items: + description: Maps a string key to a path + within a volume. + properties: + key: + description: key is the key to project. + type: string + mode: + description: 'mode is Optional: mode + bits used to set permissions on + this file. Must be an octal value + between 0000 and 0777 or a decimal + value between 0 and 511. YAML accepts + both octal and decimal values, JSON + requires decimal values for mode + bits. If not specified, the volume + defaultMode will be used. This might + be in conflict with other options + that affect the file mode, like + fsGroup, and the result can be other + mode bits set.' + format: int32 + type: integer + path: + description: path is the relative + path of the file to map the key + to. May not be an absolute path. + May not contain the path element + '..'. May not start with the string + '..'. + type: string + required: + - key + - path + type: object + type: array + x-kubernetes-list-type: atomic + name: + default: "" + 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.' + type: string + optional: + description: optional field specify whether + the Secret or its key must be defined + type: boolean + type: object + x-kubernetes-map-type: atomic + serviceAccountToken: + description: serviceAccountToken is information + about the serviceAccountToken data to project + properties: + audience: + description: audience is the intended audience + of the token. A recipient of a token must + identify itself with an identifier specified + in the audience of the token, and otherwise + should reject the token. The audience + defaults to the identifier of the apiserver. + type: string + expirationSeconds: + description: expirationSeconds is the requested + duration of validity of the service account + token. As the token approaches expiration, + the kubelet volume plugin will proactively + rotate the service account token. The + kubelet will start trying to rotate the + token if the token is older than 80 percent + of its time to live or if the token is + older than 24 hours.Defaults to 1 hour + and must be at least 10 minutes. + format: int64 + type: integer + path: + description: path is the path relative to + the mount point of the file to project + the token into. + type: string + required: + - path + type: object + type: object + type: array + x-kubernetes-list-type: atomic + type: object + quobyte: + description: quobyte represents a Quobyte mount on the + host that shares a pod's lifetime + properties: + group: + description: group to map volume access to Default + is no group + type: string + readOnly: + description: readOnly here will force the Quobyte + volume to be mounted with read-only permissions. + Defaults to false. + type: boolean + registry: + description: registry represents a single or multiple + Quobyte Registry services specified as a string + as host:port pair (multiple entries are separated + with commas) which acts as the central registry + for volumes + type: string + tenant: + description: tenant owning the given Quobyte volume + in the Backend Used with dynamically provisioned + Quobyte volumes, value is set by the plugin + type: string + user: + description: user to map volume access to Defaults + to serivceaccount user + type: string + volume: + description: volume is a string that references an + already created Quobyte volume by name. + type: string + required: + - registry + - volume + type: object + rbd: + description: 'rbd represents a Rados Block Device mount + on the host that shares a pod''s lifetime. More info: + https://examples.k8s.io/volumes/rbd/README.md' + properties: + fsType: + description: 'fsType is the filesystem type of the + volume that you want to mount. Tip: Ensure that + the filesystem type is supported by the host operating + system. Examples: "ext4", "xfs", "ntfs". Implicitly + inferred to be "ext4" if unspecified. More info: + https://kubernetes.io/docs/concepts/storage/volumes#rbd + TODO: how do we prevent errors in the filesystem + from compromising the machine' + type: string + image: + description: 'image is the rados image name. More + info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' + type: string + keyring: + description: 'keyring is the path to key ring for + RBDUser. Default is /etc/ceph/keyring. More info: + https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' + type: string + monitors: + description: 'monitors is a collection of Ceph monitors. + More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' + items: + type: string + type: array + x-kubernetes-list-type: atomic + pool: + description: 'pool is the rados pool name. Default + is rbd. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' + type: string + readOnly: + description: 'readOnly here will force the ReadOnly + setting in VolumeMounts. Defaults to false. More + info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' + type: boolean + secretRef: + description: 'secretRef is name of the authentication + secret for RBDUser. If provided overrides keyring. + Default is nil. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' + properties: + name: + default: "" + 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.' + type: string + type: object + x-kubernetes-map-type: atomic + user: + description: 'user is the rados user name. Default + is admin. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' + type: string + required: + - image + - monitors + type: object + scaleIO: + description: scaleIO represents a ScaleIO persistent volume + attached and mounted on Kubernetes nodes. + properties: + fsType: + description: fsType is the filesystem type to mount. + Must be a filesystem type supported by the host + operating system. Ex. "ext4", "xfs", "ntfs". Default + is "xfs". + type: string + gateway: + description: gateway is the host address of the ScaleIO + API Gateway. + type: string + protectionDomain: + description: protectionDomain is the name of the ScaleIO + Protection Domain for the configured storage. + type: string + readOnly: + description: readOnly Defaults to false (read/write). + ReadOnly here will force the ReadOnly setting in + VolumeMounts. + type: boolean + secretRef: + description: secretRef references to the secret for + ScaleIO user and other sensitive information. If + this is not provided, Login operation will fail. + properties: + name: + default: "" + 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.' + type: string + type: object + x-kubernetes-map-type: atomic + sslEnabled: + description: sslEnabled Flag enable/disable SSL communication + with Gateway, default false + type: boolean + storageMode: + description: storageMode indicates whether the storage + for a volume should be ThickProvisioned or ThinProvisioned. + Default is ThinProvisioned. + type: string + storagePool: + description: storagePool is the ScaleIO Storage Pool + associated with the protection domain. + type: string + system: + description: system is the name of the storage system + as configured in ScaleIO. + type: string + volumeName: + description: volumeName is the name of a volume already + created in the ScaleIO system that is associated + with this volume source. + type: string + required: + - gateway + - secretRef + - system + type: object + secret: + description: 'secret represents a secret that should populate + this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret' + properties: + defaultMode: + description: 'defaultMode is Optional: mode bits used + to set permissions on created files by default. + Must be an octal value between 0000 and 0777 or + a decimal value between 0 and 511. YAML accepts + both octal and decimal values, JSON requires decimal + values for mode bits. Defaults to 0644. Directories + within the path are not affected by this setting. + This might be in conflict with other options that + affect the file mode, like fsGroup, and the result + can be other mode bits set.' + format: int32 + type: integer + items: + description: items If unspecified, each key-value + pair in the Data field of the referenced Secret + will be projected into the volume as a file whose + name is the key and content is the value. If specified, + the listed keys will be projected into the specified + paths, and unlisted keys will not be present. If + a key is specified which is not present in the Secret, + the volume setup will error unless it is marked + optional. Paths must be relative and may not contain + the '..' path or start with '..'. + items: + description: Maps a string key to a path within + a volume. + properties: + key: + description: key is the key to project. + type: string + mode: + description: 'mode is Optional: mode bits used + to set permissions on this file. Must be an + octal value between 0000 and 0777 or a decimal + value between 0 and 511. YAML accepts both + octal and decimal values, JSON requires decimal + values for mode bits. If not specified, the + volume defaultMode will be used. This might + be in conflict with other options that affect + the file mode, like fsGroup, and the result + can be other mode bits set.' + format: int32 + type: integer + path: + description: path is the relative path of the + file to map the key to. May not be an absolute + path. May not contain the path element '..'. + May not start with the string '..'. + type: string + required: + - key + - path + type: object + type: array + x-kubernetes-list-type: atomic + optional: + description: optional field specify whether the Secret + or its keys must be defined + type: boolean + secretName: + description: 'secretName is the name of the secret + in the pod''s namespace to use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret' + type: string + type: object + storageos: + description: storageOS represents a StorageOS volume attached + and mounted on Kubernetes nodes. + properties: + fsType: + description: fsType is the filesystem type to mount. + Must be a filesystem type supported by the host + operating system. Ex. "ext4", "xfs", "ntfs". Implicitly + inferred to be "ext4" if unspecified. + type: string + readOnly: + description: readOnly defaults to false (read/write). + ReadOnly here will force the ReadOnly setting in + VolumeMounts. + type: boolean + secretRef: + description: secretRef specifies the secret to use + for obtaining the StorageOS API credentials. If + not specified, default values will be attempted. + properties: + name: + default: "" + 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.' + type: string + type: object + x-kubernetes-map-type: atomic + volumeName: + description: volumeName is the human-readable name + of the StorageOS volume. Volume names are only + unique within a namespace. + type: string + volumeNamespace: + description: volumeNamespace specifies the scope of + the volume within StorageOS. If no namespace is + specified then the Pod's namespace will be used. This + allows the Kubernetes name scoping to be mirrored + within StorageOS for tighter integration. Set VolumeName + to any name to override the default behaviour. Set + to "default" if you are not using namespaces within + StorageOS. Namespaces that do not pre-exist within + StorageOS will be created. + type: string + type: object + vsphereVolume: + description: vsphereVolume represents a vSphere volume + attached and mounted on kubelets host machine + properties: + fsType: + description: fsType is filesystem type to mount. Must + be a filesystem type supported by the host operating + system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred + to be "ext4" if unspecified. + type: string + storagePolicyID: + description: storagePolicyID is the storage Policy + Based Management (SPBM) profile ID associated with + the StoragePolicyName. + type: string + storagePolicyName: + description: storagePolicyName is the storage Policy + Based Management (SPBM) profile name. + type: string + volumePath: + description: volumePath is the path that identifies + vSphere volume vmdk + type: string + required: + - volumePath + type: object + required: + - name + type: object + type: array + x-kubernetes-list-map-keys: + - name + x-kubernetes-list-type: map + required: + - containers + type: object + type: object + updateStrategy: + description: updateStrategy indicates the PetSetUpdateStrategy that + will be employed to update Pods in the PetSet when a revision is made + to Template. + properties: + rollingUpdate: + description: RollingUpdate is used to communicate parameters when + Type is RollingUpdateStatefulSetStrategyType. + properties: + maxUnavailable: + anyOf: + - type: integer + - type: string + description: 'The maximum number of pods that can be unavailable + during the update. Value can be an absolute number (ex: 5) + or a percentage of desired pods (ex: 10%). Absolute number + is calculated from percentage by rounding up. This can not + be 0. Defaults to 1. This field is alpha-level and is only + honored by servers that enable the MaxUnavailableStatefulSet + feature. The field applies to all pods in the range 0 to Replicas-1. + That means if there is any unavailable pod in the range 0 + to Replicas-1, it will be counted towards MaxUnavailable.' + x-kubernetes-int-or-string: true + partition: + description: Partition indicates the ordinal at which the StatefulSet + should be partitioned for updates. During a rolling update, + all pods from ordinal Replicas-1 to Partition are updated. + All pods from ordinal Partition-1 to 0 remain untouched. This + is helpful in being able to do a canary based deployment. + The default value is 0. + format: int32 + type: integer + type: object + type: + description: Type indicates the type of the StatefulSetUpdateStrategy. + Default is RollingUpdate. + type: string + type: object + volumeClaimTemplates: + description: 'volumeClaimTemplates is a list of claims that pods are + allowed to reference. The PetSet controller is responsible for mapping + network identities to claims in a way that maintains the identity + of a pod. Every claim in this list must have at least one matching + (by name) volumeMount in one container in the template. A claim in + this list takes precedence over any volumes in the template, with + the same name. TODO: Define the behavior if a claim already exists + with the same name.' + items: + description: PersistentVolumeClaim is a user's request for and claim + to a persistent volume + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this + representation of an object. Servers should convert recognized + schemas to the latest internal value, and may reject unrecognized + values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource + this object represents. Servers may infer this from the endpoint + the client submits requests to. Cannot be updated. In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + description: 'Standard object''s metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata' + properties: + annotations: + additionalProperties: + type: string + type: object + finalizers: + items: + type: string + type: array + labels: + additionalProperties: + type: string + type: object + name: + type: string + namespace: + type: string + type: object + spec: + description: 'spec defines the desired characteristics of a volume + requested by a pod author. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' + properties: + accessModes: + description: 'accessModes contains the desired access modes + the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1' + items: + type: string + type: array + x-kubernetes-list-type: atomic + dataSource: + description: 'dataSource field can be used to specify either: + * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) + * An existing PVC (PersistentVolumeClaim) If the provisioner + or an external controller can support the specified data + source, it will create a new volume based on the contents + of the specified data source. 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.' + properties: + apiGroup: + description: APIGroup is the group for the resource being + referenced. If APIGroup is not specified, the specified + Kind must be in the core API group. For any other third-party + types, APIGroup is required. + type: string + kind: + description: Kind is the type of resource being referenced + type: string + name: + description: Name is the name of resource being referenced + type: string + required: + - kind + - name + type: object + x-kubernetes-map-type: atomic + dataSourceRef: + description: 'dataSourceRef specifies the object from which + to populate the volume with data, if a non-empty volume + is desired. This may be any 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.' + properties: + apiGroup: + description: APIGroup is the group for the resource being + referenced. If APIGroup is not specified, the specified + Kind must be in the core API group. For any other third-party + types, APIGroup is required. + type: string + kind: + description: Kind is the type of resource being referenced + type: string + name: + description: Name is the name of resource being referenced + type: string + namespace: + 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. + type: string + required: + - kind + - name + type: object + resources: + description: 'resources represents the minimum resources the + volume should have. If RecoverVolumeExpansionFailure feature + is enabled users are allowed to specify resource requirements + that are lower than previous value but must still be higher + than capacity recorded in the status field of the claim. + More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources' + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + description: 'Limits describes the maximum amount of compute + resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + description: 'Requests describes the minimum amount of + compute resources required. If Requests is omitted for + a container, it defaults to Limits if that is explicitly + specified, otherwise to an implementation-defined value. + Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' + type: object + type: object + selector: + description: selector is a label query over volumes to consider + for binding. + properties: + matchExpressions: + description: matchExpressions is a list of label selector + requirements. The requirements are ANDed. + items: + description: A label selector requirement is a selector + that contains values, a key, and an operator that + relates the key and values. + properties: + key: + description: key is the label key that the selector + applies to. + type: string + operator: + description: operator represents a key's relationship + to a set of values. Valid operators are In, NotIn, + Exists and DoesNotExist. + type: string + values: + description: values is an array of string values. + If the operator is In or NotIn, the values array + must be non-empty. If the operator is Exists or + DoesNotExist, the values array must be empty. + This array is replaced during a strategic merge + patch. + items: + type: string + type: array + x-kubernetes-list-type: atomic + required: + - key + - operator + type: object + type: array + x-kubernetes-list-type: atomic + matchLabels: + additionalProperties: + type: string + description: matchLabels is a map of {key,value} pairs. + A single {key,value} in the matchLabels map is equivalent + to an element of matchExpressions, whose key field is + "key", the operator is "In", and the values array contains + only "value". The requirements are ANDed. + type: object + type: object + x-kubernetes-map-type: atomic + storageClassName: + description: 'storageClassName is the name of the StorageClass + required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1' + type: string + volumeAttributesClassName: + description: 'volumeAttributesClassName may be used to set + the VolumeAttributesClass used by this claim. If specified, + the CSI driver will create or update the volume with the + attributes defined in the corresponding VolumeAttributesClass. + This has a different purpose than storageClassName, it can + be changed after the claim is created. An empty string value + means that no VolumeAttributesClass will be applied to the + claim but it''s not allowed to reset this field to empty + string once it is set. If unspecified and the PersistentVolumeClaim + is unbound, the default VolumeAttributesClass will be set + by the persistentvolume controller if it exists. If the + resource referred to by volumeAttributesClass does not exist, + this PersistentVolumeClaim will be set to a Pending state, + as reflected by the modifyVolumeStatus field, until such + as a resource exists. More info: https://kubernetes.io/docs/concepts/storage/volume-attributes-classes/ + (Alpha) Using this field requires the VolumeAttributesClass + feature gate to be enabled.' + type: string + volumeMode: + description: volumeMode defines what type of volume is required + by the claim. Value of Filesystem is implied when not included + in claim spec. + type: string + volumeName: + description: volumeName is the binding reference to the PersistentVolume + backing this claim. + type: string + type: object + status: + description: 'status represents the current information/status + of a persistent volume claim. Read-only. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' + properties: + accessModes: + description: 'accessModes contains the actual access modes + the volume backing the PVC has. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1' + items: + type: string + type: array + x-kubernetes-list-type: atomic + allocatedResourceStatuses: + additionalProperties: + 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. + type: string + 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." + type: object + x-kubernetes-map-type: granular + allocatedResources: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + description: "allocatedResources 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." + type: object + capacity: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + description: capacity represents the actual resources of the + underlying volume. + type: object + conditions: + description: conditions is the current Condition of persistent + volume claim. If underlying persistent volume is being resized + then the Condition will be set to 'Resizing'. + items: + description: PersistentVolumeClaimCondition contains details + about state of pvc + properties: + lastProbeTime: + description: lastProbeTime is the time we probed the + condition. + format: date-time + type: string + lastTransitionTime: + description: lastTransitionTime is the time the condition + transitioned from one status to another. + format: date-time + type: string + message: + description: message is the human-readable message indicating + details about last transition. + type: string + reason: + description: reason is a unique, this should be a short, + machine understandable string that gives the reason + for condition's last transition. If it reports "Resizing" + that means the underlying persistent volume is being + resized. + type: string + status: + type: string + type: + description: PersistentVolumeClaimConditionType is a + valid value of PersistentVolumeClaimCondition.Type + type: string + required: + - status + - type + type: object + type: array + x-kubernetes-list-map-keys: + - type + x-kubernetes-list-type: map + currentVolumeAttributesClassName: + description: currentVolumeAttributesClassName is the current + name of the VolumeAttributesClass the PVC is using. When + unset, there is no VolumeAttributeClass applied to this + PersistentVolumeClaim This is an alpha field and requires + enabling VolumeAttributesClass feature. + type: string + modifyVolumeStatus: + description: ModifyVolumeStatus represents the status object + of ControllerModifyVolume operation. When this is unset, + there is no ModifyVolume operation being attempted. This + is an alpha field and requires enabling VolumeAttributesClass + feature. + properties: + status: + description: 'status is the status of the ControllerModifyVolume + operation. It can be in any of following states: - Pending + Pending indicates that the PersistentVolumeClaim cannot + be modified due to unmet requirements, such as the specified + VolumeAttributesClass not existing. - InProgress InProgress + indicates that the volume is being modified. - Infeasible + Infeasible indicates that the request has been rejected + as invalid by the CSI driver. To resolve the error, + a valid VolumeAttributesClass needs to be specified. + Note: New statuses can be added in the future. Consumers + should check for unknown statuses and fail appropriately.' + type: string + targetVolumeAttributesClassName: + description: targetVolumeAttributesClassName is the name + of the VolumeAttributesClass the PVC currently being + reconciled + type: string + required: + - status + type: object + phase: + description: phase represents the current phase of PersistentVolumeClaim. + type: string + type: object + type: object + type: array + x-kubernetes-list-type: atomic + required: + - selector + - serviceName + - template + type: object + type: object diff --git a/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/apps.k8s.appscode.com/v1/placementpolicies.yaml b/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/apps.k8s.appscode.com/v1/placementpolicies.yaml new file mode 100644 index 0000000000..161a38035a --- /dev/null +++ b/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/apps.k8s.appscode.com/v1/placementpolicies.yaml @@ -0,0 +1,130 @@ +apiVersion: meta.k8s.appscode.com/v1alpha1 +kind: ResourceDescriptor +metadata: + creationTimestamp: null + labels: + k8s.io/group: apps.k8s.appscode.com + k8s.io/kind: PlacementPolicy + k8s.io/resource: placementpolicies + k8s.io/version: v1 + name: apps.k8s.appscode.com-v1-placementpolicies +spec: + resource: + group: apps.k8s.appscode.com + kind: PlacementPolicy + name: placementpolicies + scope: Cluster + version: v1 + validation: + openAPIV3Schema: + description: "PlacementPolicy represents a set of pods with consistent identities. + Identities are defined as: - Network: A single stable DNS and hostname. - + Storage: As many VolumeClaims as requested. \n The PlacementPolicy guarantees + that a given network identity will always map to the same storage identity." + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + properties: + name: + description: 'Name must be unique within a namespace. Is required when + creating resources, although some resources may allow a client to + request the generation of an appropriate name automatically. Name + is primarily intended for creation idempotence and configuration definition. + Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names' + type: string + labels: + additionalProperties: + type: string + description: 'Map of string keys and values that can be used to organize + and categorize (scope and select) objects. May match selectors of + replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels' + type: object + annotations: + additionalProperties: + type: string + description: 'Annotations is an unstructured key value map stored with + a resource that may be set by external tools to store and retrieve + arbitrary metadata. They are not queryable and should be preserved + when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations' + type: object + type: object + spec: + description: Spec defines the desired identities of pods in this set. + properties: + affinity: + description: If specified, the pod's scheduling constraints + properties: + nodeAffinity: + description: Describes node affinity scheduling rules for the pod. + items: + properties: + domains: + items: + properties: + replicas: + type: string + values: + items: + type: string + type: array + required: + - replicas + - values + type: object + type: array + topologyKey: + type: string + weight: + default: 50 + description: Weight associated with matching the corresponding + nodeSelectorTerm, in the range 1-100. + format: int32 + type: integer + whenUnsatisfiable: + default: DoNotSchedule + type: string + required: + - domains + - topologyKey + - weight + - whenUnsatisfiable + type: object + type: array + type: object + nodeSpreadConstraint: + properties: + maxSkew: + default: 1 + format: int32 + type: integer + whenUnsatisfiable: + default: DoNotSchedule + type: string + required: + - maxSkew + - whenUnsatisfiable + type: object + zoneSpreadConstraint: + properties: + maxSkew: + default: 1 + format: int32 + type: integer + whenUnsatisfiable: + default: DoNotSchedule + type: string + required: + - maxSkew + - whenUnsatisfiable + type: object + type: object + type: object diff --git a/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/catalog.kubedb.com/v1alpha1/clickhouseversions.yaml b/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/catalog.kubedb.com/v1alpha1/clickhouseversions.yaml index 49d0ab6d2a..3adb0149ba 100644 --- a/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/catalog.kubedb.com/v1alpha1/clickhouseversions.yaml +++ b/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/catalog.kubedb.com/v1alpha1/clickhouseversions.yaml @@ -69,6 +69,21 @@ spec: format: int64 type: integer type: object + ui: + items: + properties: + disable: + type: boolean + name: + type: string + values: + x-kubernetes-preserve-unknown-fields: true + version: + type: string + required: + - name + type: object + type: array version: type: string required: diff --git a/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/catalog.kubedb.com/v1alpha1/druidversions.yaml b/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/catalog.kubedb.com/v1alpha1/druidversions.yaml index 5591b66d7f..e2cd90fbef 100644 --- a/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/catalog.kubedb.com/v1alpha1/druidversions.yaml +++ b/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/catalog.kubedb.com/v1alpha1/druidversions.yaml @@ -71,6 +71,21 @@ spec: format: int64 type: integer type: object + ui: + items: + properties: + disable: + type: boolean + name: + type: string + values: + x-kubernetes-preserve-unknown-fields: true + version: + type: string + required: + - name + type: object + type: array version: type: string required: diff --git a/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/catalog.kubedb.com/v1alpha1/elasticsearchversions.yaml b/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/catalog.kubedb.com/v1alpha1/elasticsearchversions.yaml index 0806816f9b..0d7be375f5 100644 --- a/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/catalog.kubedb.com/v1alpha1/elasticsearchversions.yaml +++ b/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/catalog.kubedb.com/v1alpha1/elasticsearchversions.yaml @@ -173,6 +173,21 @@ spec: - restoreTask type: object type: object + ui: + items: + properties: + disable: + type: boolean + name: + type: string + values: + x-kubernetes-preserve-unknown-fields: true + version: + type: string + required: + - name + type: object + type: array updateConstraints: properties: allowlist: diff --git a/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/catalog.kubedb.com/v1alpha1/ferretdbversions.yaml b/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/catalog.kubedb.com/v1alpha1/ferretdbversions.yaml index 430e44102d..8ea203ba08 100644 --- a/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/catalog.kubedb.com/v1alpha1/ferretdbversions.yaml +++ b/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/catalog.kubedb.com/v1alpha1/ferretdbversions.yaml @@ -64,6 +64,21 @@ spec: format: int64 type: integer type: object + ui: + items: + properties: + disable: + type: boolean + name: + type: string + values: + x-kubernetes-preserve-unknown-fields: true + version: + type: string + required: + - name + type: object + type: array updateConstraints: properties: allowlist: diff --git a/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/catalog.kubedb.com/v1alpha1/kafkaversions.yaml b/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/catalog.kubedb.com/v1alpha1/kafkaversions.yaml index c4ffc13395..8211d61a2a 100644 --- a/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/catalog.kubedb.com/v1alpha1/kafkaversions.yaml +++ b/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/catalog.kubedb.com/v1alpha1/kafkaversions.yaml @@ -132,6 +132,21 @@ spec: - restoreTask type: object type: object + ui: + items: + properties: + disable: + type: boolean + name: + type: string + values: + x-kubernetes-preserve-unknown-fields: true + version: + type: string + required: + - name + type: object + type: array updateConstraints: properties: allowlist: diff --git a/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/catalog.kubedb.com/v1alpha1/mariadbversions.yaml b/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/catalog.kubedb.com/v1alpha1/mariadbversions.yaml index 47b6d59862..d722ff6825 100644 --- a/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/catalog.kubedb.com/v1alpha1/mariadbversions.yaml +++ b/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/catalog.kubedb.com/v1alpha1/mariadbversions.yaml @@ -190,6 +190,21 @@ spec: - restoreTask type: object type: object + ui: + items: + properties: + disable: + type: boolean + name: + type: string + values: + x-kubernetes-preserve-unknown-fields: true + version: + type: string + required: + - name + type: object + type: array updateConstraints: properties: allowlist: diff --git a/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/catalog.kubedb.com/v1alpha1/memcachedversions.yaml b/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/catalog.kubedb.com/v1alpha1/memcachedversions.yaml index 4a5fc2678b..fd92595f8f 100644 --- a/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/catalog.kubedb.com/v1alpha1/memcachedversions.yaml +++ b/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/catalog.kubedb.com/v1alpha1/memcachedversions.yaml @@ -78,6 +78,21 @@ spec: format: int64 type: integer type: object + ui: + items: + properties: + disable: + type: boolean + name: + type: string + values: + x-kubernetes-preserve-unknown-fields: true + version: + type: string + required: + - name + type: object + type: array version: type: string required: diff --git a/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/catalog.kubedb.com/v1alpha1/mongodbversions.yaml b/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/catalog.kubedb.com/v1alpha1/mongodbversions.yaml index 5d157686ac..64c52af482 100644 --- a/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/catalog.kubedb.com/v1alpha1/mongodbversions.yaml +++ b/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/catalog.kubedb.com/v1alpha1/mongodbversions.yaml @@ -200,6 +200,21 @@ spec: - restoreTask type: object type: object + ui: + items: + properties: + disable: + type: boolean + name: + type: string + values: + x-kubernetes-preserve-unknown-fields: true + version: + type: string + required: + - name + type: object + type: array updateConstraints: properties: allowlist: diff --git a/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/catalog.kubedb.com/v1alpha1/mssqlserverversions.yaml b/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/catalog.kubedb.com/v1alpha1/mssqlserverversions.yaml index 5df2b43927..38b0b11089 100644 --- a/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/catalog.kubedb.com/v1alpha1/mssqlserverversions.yaml +++ b/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/catalog.kubedb.com/v1alpha1/mssqlserverversions.yaml @@ -125,6 +125,21 @@ spec: - restoreTask type: object type: object + ui: + items: + properties: + disable: + type: boolean + name: + type: string + values: + x-kubernetes-preserve-unknown-fields: true + version: + type: string + required: + - name + type: object + type: array updateConstraints: properties: allowlist: diff --git a/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/catalog.kubedb.com/v1alpha1/mysqlversions.yaml b/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/catalog.kubedb.com/v1alpha1/mysqlversions.yaml index 9542ad0a17..f027fba0c3 100644 --- a/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/catalog.kubedb.com/v1alpha1/mysqlversions.yaml +++ b/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/catalog.kubedb.com/v1alpha1/mysqlversions.yaml @@ -219,6 +219,21 @@ spec: - restoreTask type: object type: object + ui: + items: + properties: + disable: + type: boolean + name: + type: string + values: + x-kubernetes-preserve-unknown-fields: true + version: + type: string + required: + - name + type: object + type: array updateConstraints: properties: allowlist: diff --git a/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/catalog.kubedb.com/v1alpha1/perconaxtradbversions.yaml b/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/catalog.kubedb.com/v1alpha1/perconaxtradbversions.yaml index ec7d50e262..19c5931794 100644 --- a/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/catalog.kubedb.com/v1alpha1/perconaxtradbversions.yaml +++ b/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/catalog.kubedb.com/v1alpha1/perconaxtradbversions.yaml @@ -146,6 +146,21 @@ spec: - restoreTask type: object type: object + ui: + items: + properties: + disable: + type: boolean + name: + type: string + values: + x-kubernetes-preserve-unknown-fields: true + version: + type: string + required: + - name + type: object + type: array updateConstraints: properties: allowlist: diff --git a/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/catalog.kubedb.com/v1alpha1/pgbouncerversions.yaml b/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/catalog.kubedb.com/v1alpha1/pgbouncerversions.yaml index c62eea571c..6c9529402e 100644 --- a/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/catalog.kubedb.com/v1alpha1/pgbouncerversions.yaml +++ b/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/catalog.kubedb.com/v1alpha1/pgbouncerversions.yaml @@ -73,6 +73,21 @@ spec: format: int64 type: integer type: object + ui: + items: + properties: + disable: + type: boolean + name: + type: string + values: + x-kubernetes-preserve-unknown-fields: true + version: + type: string + required: + - name + type: object + type: array updateConstraints: properties: allowlist: diff --git a/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/catalog.kubedb.com/v1alpha1/pgpoolversions.yaml b/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/catalog.kubedb.com/v1alpha1/pgpoolversions.yaml index 781a1e27ee..0a8de78f18 100644 --- a/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/catalog.kubedb.com/v1alpha1/pgpoolversions.yaml +++ b/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/catalog.kubedb.com/v1alpha1/pgpoolversions.yaml @@ -73,6 +73,21 @@ spec: format: int64 type: integer type: object + ui: + items: + properties: + disable: + type: boolean + name: + type: string + values: + x-kubernetes-preserve-unknown-fields: true + version: + type: string + required: + - name + type: object + type: array version: type: string required: diff --git a/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/catalog.kubedb.com/v1alpha1/postgresversions.yaml b/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/catalog.kubedb.com/v1alpha1/postgresversions.yaml index d286edbf5e..cf8b9d454a 100644 --- a/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/catalog.kubedb.com/v1alpha1/postgresversions.yaml +++ b/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/catalog.kubedb.com/v1alpha1/postgresversions.yaml @@ -202,6 +202,21 @@ spec: - restoreTask type: object type: object + ui: + items: + properties: + disable: + type: boolean + name: + type: string + values: + x-kubernetes-preserve-unknown-fields: true + version: + type: string + required: + - name + type: object + type: array updateConstraints: properties: allowlist: diff --git a/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/catalog.kubedb.com/v1alpha1/proxysqlversions.yaml b/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/catalog.kubedb.com/v1alpha1/proxysqlversions.yaml index d60cbf6f58..a4bc742ee8 100644 --- a/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/catalog.kubedb.com/v1alpha1/proxysqlversions.yaml +++ b/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/catalog.kubedb.com/v1alpha1/proxysqlversions.yaml @@ -78,6 +78,21 @@ spec: format: int64 type: integer type: object + ui: + items: + properties: + disable: + type: boolean + name: + type: string + values: + x-kubernetes-preserve-unknown-fields: true + version: + type: string + required: + - name + type: object + type: array updateConstraints: properties: allowlist: diff --git a/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/catalog.kubedb.com/v1alpha1/rabbitmqversions.yaml b/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/catalog.kubedb.com/v1alpha1/rabbitmqversions.yaml index 492ca3e674..cebe404788 100644 --- a/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/catalog.kubedb.com/v1alpha1/rabbitmqversions.yaml +++ b/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/catalog.kubedb.com/v1alpha1/rabbitmqversions.yaml @@ -71,6 +71,21 @@ spec: format: int64 type: integer type: object + ui: + items: + properties: + disable: + type: boolean + name: + type: string + values: + x-kubernetes-preserve-unknown-fields: true + version: + type: string + required: + - name + type: object + type: array version: type: string required: diff --git a/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/catalog.kubedb.com/v1alpha1/redisversions.yaml b/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/catalog.kubedb.com/v1alpha1/redisversions.yaml index 0bd92f38f3..21e3470552 100644 --- a/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/catalog.kubedb.com/v1alpha1/redisversions.yaml +++ b/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/catalog.kubedb.com/v1alpha1/redisversions.yaml @@ -146,6 +146,21 @@ spec: - restoreTask type: object type: object + ui: + items: + properties: + disable: + type: boolean + name: + type: string + values: + x-kubernetes-preserve-unknown-fields: true + version: + type: string + required: + - name + type: object + type: array updateConstraints: properties: allowlist: diff --git a/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/kubedb.com/v1/elasticsearches.yaml b/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/kubedb.com/v1/elasticsearches.yaml index 1793d5636b..376ae5ce2b 100644 --- a/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/kubedb.com/v1/elasticsearches.yaml +++ b/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/kubedb.com/v1/elasticsearches.yaml @@ -9,6 +9,108 @@ metadata: k8s.io/version: v1 name: kubedb.com-v1-elasticsearches spec: + connections: + - labels: + - offshoot + level: Controller + namespace: + path: metadata.namespace + selector: + matchLabels: + app.kubernetes.io/instance: '{.metadata.name}' + app.kubernetes.io/managed-by: kubedb.com + app.kubernetes.io/name: elasticsearches.kubedb.com + target: + apiVersion: apps.k8s.appscode.com/v1 + kind: PetSet + type: MatchSelector + - labels: + - auth_secret + references: + - '{.spec.authSecret.name}' + target: + apiVersion: v1 + kind: Secret + type: MatchRef + - labels: + - catalog + references: + - '{.spec.version}' + target: + apiVersion: catalog.kubedb.com/v1alpha1 + kind: ElasticsearchVersion + type: MatchRef + - labels: + - cert_issuer + namespace: + path: metadata.namespace + references: + - '{.spec.tls.issuerRef.name},{.metadata.namespace}' + target: + apiVersion: cert-manager.io/v1 + kind: Issuer + type: MatchRef + - labels: + - cert_issuer + references: + - '{.spec.tls.issuerRef.name}' + target: + apiVersion: cert-manager.io/v1 + kind: ClusterIssuer + type: MatchRef + - labels: + - view + nameTemplate: '{.metadata.name}~Elasticsearch.kubedb.com' + namespace: + path: metadata.namespace + target: + apiVersion: core.k8s.appscode.com/v1alpha1 + kind: GenericResource + type: MatchName + - labels: + - view + nameTemplate: '{.metadata.name}~Elasticsearch.kubedb.com' + namespace: + path: metadata.namespace + target: + apiVersion: core.k8s.appscode.com/v1alpha1 + kind: GenericResourceService + type: MatchName + - labels: + - view + nameTemplate: '{.metadata.name}' + namespace: + path: metadata.namespace + target: + apiVersion: ui.kubedb.com/v1alpha1 + kind: ElasticsearchInsight + type: MatchName + - labels: + - view + nameTemplate: '{.metadata.name}' + namespace: + path: metadata.namespace + target: + apiVersion: ui.kubedb.com/v1alpha1 + kind: ElasticsearchNodesStats + type: MatchName + - labels: + - view + nameTemplate: '{.metadata.name}' + namespace: + path: metadata.namespace + target: + apiVersion: ui.kubedb.com/v1alpha1 + kind: ElasticsearchSchemaOverview + type: MatchName + exec: + - alias: Primary + command: + - bash + container: elasticsearch + help: | + curl -XGET -k -u "$ELASTIC_USER:$ELASTIC_PASSWORD" "https://localhost:9200/_cluster/health?pretty" + serviceNameTemplate: '{{- .metadata.name -}}' resource: group: kubedb.com kind: Elasticsearch diff --git a/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/kubedb.com/v1/kafkas.yaml b/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/kubedb.com/v1/kafkas.yaml index 3dd66287cd..044e994158 100644 --- a/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/kubedb.com/v1/kafkas.yaml +++ b/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/kubedb.com/v1/kafkas.yaml @@ -9,6 +9,102 @@ metadata: k8s.io/version: v1 name: kubedb.com-v1-kafkas spec: + connections: + - labels: + - offshoot + level: Controller + namespace: + path: metadata.namespace + selector: + matchLabels: + app.kubernetes.io/instance: '{.metadata.name}' + app.kubernetes.io/managed-by: kubedb.com + app.kubernetes.io/name: kafkas.kubedb.com + target: + apiVersion: apps.k8s.appscode.com/v1 + kind: PetSet + type: MatchSelector + - labels: + - connect_via + level: Controller + nameTemplate: '{.metadata.name}' + namespace: + path: metadata.namespace + target: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + type: MatchName + - labels: + - catalog + references: + - '{.spec.version}' + target: + apiVersion: catalog.kubedb.com/v1alpha1 + kind: KafkaVersion + type: MatchRef + - labels: + - cert_issuer + namespace: + path: metadata.namespace + references: + - '{.spec.tls.issuerRef.name},{.metadata.namespace}' + target: + apiVersion: cert-manager.io/v1 + kind: Issuer + type: MatchRef + - labels: + - cert_issuer + references: + - '{.spec.tls.issuerRef.name}' + target: + apiVersion: cert-manager.io/v1 + kind: ClusterIssuer + type: MatchRef + - labels: + - view + nameTemplate: '{.metadata.name}~Kafka.kubedb.com' + namespace: + path: metadata.namespace + target: + apiVersion: core.k8s.appscode.com/v1alpha1 + kind: GenericResource + type: MatchName + - labels: + - view + nameTemplate: '{.metadata.name}~Kafka.kubedb.com' + namespace: + path: metadata.namespace + target: + apiVersion: core.k8s.appscode.com/v1alpha1 + kind: GenericResourceService + type: MatchName + - labels: + - view + nameTemplate: '{.metadata.name}' + namespace: + path: metadata.namespace + target: + apiVersion: ui.kubedb.com/v1alpha1 + kind: KafkaInsight + type: MatchName + - labels: + - view + nameTemplate: '{.metadata.name}' + namespace: + path: metadata.namespace + target: + apiVersion: ui.kubedb.com/v1alpha1 + kind: KafkaNodesStats + type: MatchName + - labels: + - view + nameTemplate: '{.metadata.name}' + namespace: + path: metadata.namespace + target: + apiVersion: ui.kubedb.com/v1alpha1 + kind: KafkaSchemaOverview + type: MatchName resource: group: kubedb.com kind: Kafka diff --git a/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/kubedb.com/v1/mariadbs.yaml b/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/kubedb.com/v1/mariadbs.yaml index 0d0a4053a1..1a16343693 100644 --- a/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/kubedb.com/v1/mariadbs.yaml +++ b/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/kubedb.com/v1/mariadbs.yaml @@ -9,6 +9,110 @@ metadata: k8s.io/version: v1 name: kubedb.com-v1-mariadbs spec: + connections: + - labels: + - offshoot + level: Controller + namespace: + path: metadata.namespace + selector: + matchLabels: + app.kubernetes.io/instance: '{.metadata.name}' + app.kubernetes.io/managed-by: kubedb.com + app.kubernetes.io/name: mariadbs.kubedb.com + target: + apiVersion: apps.k8s.appscode.com/v1 + kind: PetSet + type: MatchSelector + - labels: + - auth_secret + references: + - '{.spec.authSecret.name}' + target: + apiVersion: v1 + kind: Secret + type: MatchRef + - labels: + - catalog + references: + - '{.spec.version}' + target: + apiVersion: catalog.kubedb.com/v1alpha1 + kind: MariaDBVersion + type: MatchRef + - labels: + - cert_issuer + namespace: + path: metadata.namespace + references: + - '{.spec.tls.issuerRef.name},{.metadata.namespace}' + target: + apiVersion: cert-manager.io/v1 + kind: Issuer + type: MatchRef + - labels: + - cert_issuer + references: + - '{.spec.tls.issuerRef.name}' + target: + apiVersion: cert-manager.io/v1 + kind: ClusterIssuer + type: MatchRef + - labels: + - view + nameTemplate: '{.metadata.name}~MariaDB.kubedb.com' + namespace: + path: metadata.namespace + target: + apiVersion: core.k8s.appscode.com/v1alpha1 + kind: GenericResource + type: MatchName + - labels: + - view + nameTemplate: '{.metadata.name}~MariaDB.kubedb.com' + namespace: + path: metadata.namespace + target: + apiVersion: core.k8s.appscode.com/v1alpha1 + kind: GenericResourceService + type: MatchName + - labels: + - view + nameTemplate: '{.metadata.name}' + namespace: + path: metadata.namespace + target: + apiVersion: ui.kubedb.com/v1alpha1 + kind: MariaDBInsight + type: MatchName + - labels: + - view + nameTemplate: '{.metadata.name}' + namespace: + path: metadata.namespace + target: + apiVersion: ui.kubedb.com/v1alpha1 + kind: MariaDBQueries + type: MatchName + - labels: + - view + nameTemplate: '{.metadata.name}' + namespace: + path: metadata.namespace + target: + apiVersion: ui.kubedb.com/v1alpha1 + kind: MariaDBSchemaOverview + type: MatchName + exec: + - alias: Primary + command: + - bash + - -c + - mariadb -u"$MYSQL_ROOT_USERNAME" -p"$MYSQL_ROOT_PASSWORD" + container: mariadb + help: | + show databases; + serviceNameTemplate: '{{- .metadata.name -}}' resource: group: kubedb.com kind: MariaDB diff --git a/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/kubedb.com/v1/memcacheds.yaml b/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/kubedb.com/v1/memcacheds.yaml index 612bb11abd..46dad4289b 100644 --- a/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/kubedb.com/v1/memcacheds.yaml +++ b/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/kubedb.com/v1/memcacheds.yaml @@ -9,6 +9,71 @@ metadata: k8s.io/version: v1 name: kubedb.com-v1-memcacheds spec: + connections: + - labels: + - offshoot + level: Controller + namespace: + path: metadata.namespace + selector: + matchLabels: + app.kubernetes.io/instance: '{.metadata.name}' + app.kubernetes.io/managed-by: kubedb.com + app.kubernetes.io/name: memcacheds.kubedb.com + target: + apiVersion: apps.k8s.appscode.com/v1 + kind: PetSet + type: MatchSelector + - labels: + - connect_via + level: Controller + nameTemplate: '{.metadata.name}' + namespace: + path: metadata.namespace + target: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + type: MatchName + - labels: + - catalog + references: + - '{.spec.version}' + target: + apiVersion: catalog.kubedb.com/v1alpha1 + kind: MemcachedVersion + type: MatchRef + - labels: + - cert_issuer + namespace: + path: metadata.namespace + references: + - '{.spec.tls.issuerRef.name},{.metadata.namespace}' + target: + apiVersion: cert-manager.io/v1 + kind: Issuer + type: MatchRef + - labels: + - cert_issuer + references: + - '{.spec.tls.issuerRef.name}' + target: + apiVersion: cert-manager.io/v1 + kind: ClusterIssuer + type: MatchRef + - labels: + - view + nameTemplate: '{.metadata.name}~Memcached.kubedb.com' + namespace: + path: metadata.namespace + target: + apiVersion: core.k8s.appscode.com/v1alpha1 + kind: GenericResource + type: MatchName + exec: + - alias: Primary + command: + - bash + serviceNameTemplate: '{{- .metadata.name -}}' resource: group: kubedb.com kind: Memcached diff --git a/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/kubedb.com/v1/mongodbs.yaml b/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/kubedb.com/v1/mongodbs.yaml index 46fb474841..bca4182899 100644 --- a/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/kubedb.com/v1/mongodbs.yaml +++ b/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/kubedb.com/v1/mongodbs.yaml @@ -9,6 +9,129 @@ metadata: k8s.io/version: v1 name: kubedb.com-v1-mongodbs spec: + connections: + - labels: + - offshoot + level: Controller + namespace: + path: metadata.namespace + selector: + matchLabels: + app.kubernetes.io/instance: '{.metadata.name}' + app.kubernetes.io/managed-by: kubedb.com + app.kubernetes.io/name: mongodbs.kubedb.com + target: + apiVersion: apps.k8s.appscode.com/v1 + kind: PetSet + type: MatchSelector + - labels: + - auth_secret + references: + - '{.spec.authSecret.name}' + target: + apiVersion: v1 + kind: Secret + type: MatchRef + - labels: + - catalog + references: + - '{.spec.version}' + target: + apiVersion: catalog.kubedb.com/v1alpha1 + kind: MongoDBVersion + type: MatchRef + - labels: + - cert_issuer + namespace: + path: metadata.namespace + references: + - '{.spec.tls.issuerRef.name},{.metadata.namespace}' + target: + apiVersion: cert-manager.io/v1 + kind: Issuer + type: MatchRef + - labels: + - cert_issuer + references: + - '{.spec.tls.issuerRef.name}' + target: + apiVersion: cert-manager.io/v1 + kind: ClusterIssuer + type: MatchRef + - labels: + - view + nameTemplate: '{.metadata.name}~MongoDB.kubedb.com' + namespace: + path: metadata.namespace + target: + apiVersion: core.k8s.appscode.com/v1alpha1 + kind: GenericResource + type: MatchName + - labels: + - view + nameTemplate: '{.metadata.name}~MongoDB.kubedb.com' + namespace: + path: metadata.namespace + target: + apiVersion: core.k8s.appscode.com/v1alpha1 + kind: GenericResourceService + type: MatchName + - labels: + - view + nameTemplate: '{.metadata.name}' + namespace: + path: metadata.namespace + target: + apiVersion: ui.kubedb.com/v1alpha1 + kind: MongoDBInsight + type: MatchName + - labels: + - view + nameTemplate: '{.metadata.name}' + namespace: + path: metadata.namespace + target: + apiVersion: ui.kubedb.com/v1alpha1 + kind: MongoDBQueries + type: MatchName + - labels: + - view + nameTemplate: '{.metadata.name}' + namespace: + path: metadata.namespace + target: + apiVersion: ui.kubedb.com/v1alpha1 + kind: MongoDBSchemaOverview + type: MatchName + exec: + - alias: Primary + command: + - bash + - -c + - mongo admin -u "$MONGO_INITDB_ROOT_USERNAME" -p "$MONGO_INITDB_ROOT_PASSWORD" + container: mongodb + help: | + show dbs; + if: + condition: '{{- if or (hasPrefix "percona-3" .spec.version) (hasPrefix "percona-4" + .spec.version) (hasPrefix "percona-5" .spec.version) (hasPrefix "3." .spec.version) + (hasPrefix "4." .spec.version) (hasPrefix "5." .spec.version) }}true{{ else + }}false{{ end -}}' + serviceNameTemplate: '{{- .metadata.name -}}' + - alias: Primary + command: + - bash + - -c + - mongosh admin -u "$MONGO_INITDB_ROOT_USERNAME" -p "$MONGO_INITDB_ROOT_PASSWORD" + container: mongodb + help: | + show dbs; + if: + condition: '{{- if or (hasPrefix "percona-3" .spec.version) (hasPrefix "percona-4" + .spec.version) (hasPrefix "percona-5" .spec.version) (hasPrefix "3." .spec.version) + (hasPrefix "4." .spec.version) (hasPrefix "5." .spec.version) }}false{{ else + }}true{{ end -}}' + serviceNameTemplate: '{{- .metadata.name -}}' resource: group: kubedb.com kind: MongoDB diff --git a/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/kubedb.com/v1/mysqls.yaml b/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/kubedb.com/v1/mysqls.yaml index bcc1854dc1..1966367035 100644 --- a/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/kubedb.com/v1/mysqls.yaml +++ b/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/kubedb.com/v1/mysqls.yaml @@ -9,6 +9,149 @@ metadata: k8s.io/version: v1 name: kubedb.com-v1-mysqls spec: + connections: + - labels: + - offshoot + level: Controller + namespace: + path: metadata.namespace + selector: + matchLabels: + app.kubernetes.io/instance: '{.metadata.name}' + app.kubernetes.io/managed-by: kubedb.com + app.kubernetes.io/name: mysqls.kubedb.com + target: + apiVersion: apps.k8s.appscode.com/v1 + kind: PetSet + type: MatchSelector + - labels: + - auth_secret + references: + - '{.spec.authSecret.name}' + target: + apiVersion: v1 + kind: Secret + type: MatchRef + - labels: + - catalog + references: + - '{.spec.version}' + target: + apiVersion: catalog.kubedb.com/v1alpha1 + kind: MySQLVersion + type: MatchRef + - labels: + - cert_issuer + namespace: + path: metadata.namespace + references: + - '{.spec.tls.issuerRef.name},{.metadata.namespace}' + target: + apiVersion: cert-manager.io/v1 + kind: Issuer + type: MatchRef + - labels: + - cert_issuer + references: + - '{.spec.tls.issuerRef.name}' + target: + apiVersion: cert-manager.io/v1 + kind: ClusterIssuer + type: MatchRef + - labels: + - view + nameTemplate: '{.metadata.name}~MySQL.kubedb.com' + namespace: + path: metadata.namespace + target: + apiVersion: core.k8s.appscode.com/v1alpha1 + kind: GenericResource + type: MatchName + - labels: + - view + nameTemplate: '{.metadata.name}~MySQL.kubedb.com' + namespace: + path: metadata.namespace + target: + apiVersion: core.k8s.appscode.com/v1alpha1 + kind: GenericResourceService + type: MatchName + - labels: + - view + nameTemplate: '{.metadata.name}' + namespace: + path: metadata.namespace + target: + apiVersion: ui.kubedb.com/v1alpha1 + kind: MySQLInsight + type: MatchName + - labels: + - view + nameTemplate: '{.metadata.name}' + namespace: + path: metadata.namespace + target: + apiVersion: ui.kubedb.com/v1alpha1 + kind: MySQLQueries + type: MatchName + - labels: + - view + nameTemplate: '{.metadata.name}' + namespace: + path: metadata.namespace + target: + apiVersion: ui.kubedb.com/v1alpha1 + kind: MySQLSchemaOverview + type: MatchName + exec: + - alias: Primary + command: + - bash + - -c + - mysql -u"$MYSQL_ROOT_USERNAME" -p"$MYSQL_ROOT_PASSWORD" + container: mysql + help: | + show databases; + if: + condition: '{{- if or (eq .spec.topology.mode "GroupReplication") (eq .spec.replicas + 1) }}true{{ else }}false{{ end -}}' + serviceNameTemplate: '{{- .metadata.name -}}' + - alias: Primary + command: + - bash + - -c + - mysql -u"$MYSQL_USER" -p"$MYSQL_PASSWORD" + container: mysql-router + help: | + show databases; + if: + condition: '{{- if eq .spec.topology.mode "InnoDBCluster" }}true{{ else }}false{{ + end -}}' + serviceNameTemplate: '{{- .metadata.name -}}' + - alias: StandBy + command: + - bash + - -c + - mysql -u"$MYSQL_ROOT_USERNAME" -p"$MYSQL_ROOT_PASSWORD" + container: mysql + help: | + show databases; + if: + condition: '{{- if eq .spec.topology.mode "GroupReplication" }}true{{ else }}false{{ + end -}}' + serviceNameTemplate: '{{- printf "%s-standby" .metadata.name -}}' + - alias: StandBy + command: + - bash + - -c + - mysql -u"$MYSQL_USER" -p"$MYSQL_PASSWORD" + container: mysql-router + help: | + show databases; + if: + condition: '{{- if eq .spec.topology.mode "InnoDBCluster" }}true{{ else }}false{{ + end -}}' + serviceNameTemplate: '{{- printf "%s-standby" .metadata.name -}}' resource: group: kubedb.com kind: MySQL diff --git a/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/kubedb.com/v1/perconaxtradbs.yaml b/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/kubedb.com/v1/perconaxtradbs.yaml index 8d70a2efe3..f99980b018 100644 --- a/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/kubedb.com/v1/perconaxtradbs.yaml +++ b/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/kubedb.com/v1/perconaxtradbs.yaml @@ -9,6 +9,67 @@ metadata: k8s.io/version: v1 name: kubedb.com-v1-perconaxtradbs spec: + connections: + - labels: + - offshoot + level: Controller + namespace: + path: metadata.namespace + selector: + matchLabels: + app.kubernetes.io/instance: '{.metadata.name}' + app.kubernetes.io/managed-by: kubedb.com + app.kubernetes.io/name: perconaxtradbs.kubedb.com + target: + apiVersion: apps.k8s.appscode.com/v1 + kind: PetSet + type: MatchSelector + - labels: + - connect_via + level: Controller + nameTemplate: '{.metadata.name}' + namespace: + path: metadata.namespace + target: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + type: MatchName + - labels: + - catalog + references: + - '{.spec.version}' + target: + apiVersion: catalog.kubedb.com/v1alpha1 + kind: PerconaXtraDBVersion + type: MatchRef + - labels: + - cert_issuer + namespace: + path: metadata.namespace + references: + - '{.spec.tls.issuerRef.name},{.metadata.namespace}' + target: + apiVersion: cert-manager.io/v1 + kind: Issuer + type: MatchRef + - labels: + - cert_issuer + references: + - '{.spec.tls.issuerRef.name}' + target: + apiVersion: cert-manager.io/v1 + kind: ClusterIssuer + type: MatchRef + exec: + - alias: Primary + command: + - bash + - -c + - mysql -u"$MYSQL_ROOT_USERNAME" -p"$MYSQL_ROOT_PASSWORD" + container: perconaxtradb + help: | + show databases; + serviceNameTemplate: '{{- .metadata.name -}}' resource: group: kubedb.com kind: PerconaXtraDB diff --git a/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/kubedb.com/v1/pgbouncers.yaml b/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/kubedb.com/v1/pgbouncers.yaml index efb543086f..d7f27cd545 100644 --- a/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/kubedb.com/v1/pgbouncers.yaml +++ b/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/kubedb.com/v1/pgbouncers.yaml @@ -9,6 +9,57 @@ metadata: k8s.io/version: v1 name: kubedb.com-v1-pgbouncers spec: + connections: + - labels: + - offshoot + level: Controller + namespace: + path: metadata.namespace + selector: + matchLabels: + app.kubernetes.io/instance: '{.metadata.name}' + app.kubernetes.io/managed-by: kubedb.com + app.kubernetes.io/name: pgbouncers.kubedb.com + target: + apiVersion: apps.k8s.appscode.com/v1 + kind: PetSet + type: MatchSelector + - labels: + - connect_via + level: Controller + nameTemplate: '{.metadata.name}' + namespace: + path: metadata.namespace + target: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + type: MatchName + - labels: + - catalog + references: + - '{.spec.version}' + target: + apiVersion: catalog.kubedb.com/v1alpha1 + kind: PgBouncerVersion + type: MatchRef + - labels: + - cert_issuer + namespace: + path: metadata.namespace + references: + - '{.spec.tls.issuerRef.name},{.metadata.namespace}' + target: + apiVersion: cert-manager.io/v1 + kind: Issuer + type: MatchRef + - labels: + - cert_issuer + references: + - '{.spec.tls.issuerRef.name}' + target: + apiVersion: cert-manager.io/v1 + kind: ClusterIssuer + type: MatchRef resource: group: kubedb.com kind: PgBouncer diff --git a/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/kubedb.com/v1/postgreses.yaml b/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/kubedb.com/v1/postgreses.yaml index 5dbbf274da..51fbd8c9f0 100644 --- a/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/kubedb.com/v1/postgreses.yaml +++ b/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/kubedb.com/v1/postgreses.yaml @@ -9,6 +9,126 @@ metadata: k8s.io/version: v1 name: kubedb.com-v1-postgreses spec: + connections: + - labels: + - offshoot + level: Controller + namespace: + path: metadata.namespace + selector: + matchLabels: + app.kubernetes.io/instance: '{.metadata.name}' + app.kubernetes.io/managed-by: kubedb.com + app.kubernetes.io/name: postgreses.kubedb.com + target: + apiVersion: apps.k8s.appscode.com/v1 + kind: PetSet + type: MatchSelector + - labels: + - auth_secret + references: + - '{.spec.authSecret.name}' + target: + apiVersion: v1 + kind: Secret + type: MatchRef + - labels: + - catalog + references: + - '{.spec.version}' + target: + apiVersion: catalog.kubedb.com/v1alpha1 + kind: PostgresVersion + type: MatchRef + - labels: + - cert_issuer + namespace: + path: metadata.namespace + references: + - '{.spec.tls.issuerRef.name},{.metadata.namespace}' + target: + apiVersion: cert-manager.io/v1 + kind: Issuer + type: MatchRef + - labels: + - cert_issuer + references: + - '{.spec.tls.issuerRef.name}' + target: + apiVersion: cert-manager.io/v1 + kind: ClusterIssuer + type: MatchRef + - labels: + - view + nameTemplate: '{.metadata.name}~Postgres.kubedb.com' + namespace: + path: metadata.namespace + target: + apiVersion: core.k8s.appscode.com/v1alpha1 + kind: GenericResource + type: MatchName + - labels: + - view + nameTemplate: '{.metadata.name}~Postgres.kubedb.com' + namespace: + path: metadata.namespace + target: + apiVersion: core.k8s.appscode.com/v1alpha1 + kind: GenericResourceService + type: MatchName + - labels: + - view + nameTemplate: '{.metadata.name}' + namespace: + path: metadata.namespace + target: + apiVersion: ui.kubedb.com/v1alpha1 + kind: PostgresInsight + type: MatchName + - labels: + - view + nameTemplate: '{.metadata.name}' + namespace: + path: metadata.namespace + target: + apiVersion: ui.kubedb.com/v1alpha1 + kind: PostgresQueries + type: MatchName + - labels: + - view + nameTemplate: '{.metadata.name}' + namespace: + path: metadata.namespace + target: + apiVersion: ui.kubedb.com/v1alpha1 + kind: PostgresSchemaOverview + type: MatchName + - labels: + - view + nameTemplate: '{.metadata.name}' + namespace: + path: metadata.namespace + target: + apiVersion: ui.kubedb.com/v1alpha1 + kind: PostgresSettings + type: MatchName + exec: + - alias: Primary + command: + - psql + container: postgres + help: | + \l + serviceNameTemplate: '{{- .metadata.name -}}' + - alias: StandBy + command: + - psql + container: postgres + help: | + \l + if: + condition: '{{- if gt .spec.replicas 1 }}true{{ else }}false{{ end -}}' + serviceNameTemplate: '{{- printf "%s-standby" .metadata.name -}}' resource: group: kubedb.com kind: Postgres diff --git a/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/kubedb.com/v1/proxysqls.yaml b/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/kubedb.com/v1/proxysqls.yaml index 147b7e4bda..e4e75ec21d 100644 --- a/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/kubedb.com/v1/proxysqls.yaml +++ b/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/kubedb.com/v1/proxysqls.yaml @@ -9,6 +9,85 @@ metadata: k8s.io/version: v1 name: kubedb.com-v1-proxysqls spec: + connections: + - labels: + - offshoot + level: Controller + namespace: + path: metadata.namespace + selector: + matchLabels: + app.kubernetes.io/instance: '{.metadata.name}' + app.kubernetes.io/managed-by: kubedb.com + app.kubernetes.io/name: proxysqls.kubedb.com + target: + apiVersion: apps.k8s.appscode.com/v1 + kind: PetSet + type: MatchSelector + - labels: + - connect_via + level: Controller + nameTemplate: '{.metadata.name}' + namespace: + path: metadata.namespace + target: + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + type: MatchName + - labels: + - catalog + references: + - '{.spec.version}' + target: + apiVersion: catalog.kubedb.com/v1alpha1 + kind: ProxySQLVersion + type: MatchRef + - labels: + - cert_issuer + namespace: + path: metadata.namespace + references: + - '{.spec.tls.issuerRef.name},{.metadata.namespace}' + target: + apiVersion: cert-manager.io/v1 + kind: Issuer + type: MatchRef + - labels: + - cert_issuer + references: + - '{.spec.tls.issuerRef.name}' + target: + apiVersion: cert-manager.io/v1 + kind: ClusterIssuer + type: MatchRef + - labels: + - view + nameTemplate: '{.metadata.name}~ProxySQL.kubedb.com' + namespace: + path: metadata.namespace + target: + apiVersion: core.k8s.appscode.com/v1alpha1 + kind: GenericResource + type: MatchName + - labels: + - view + nameTemplate: '{.metadata.name}~ProxySQL.kubedb.com' + namespace: + path: metadata.namespace + target: + apiVersion: core.k8s.appscode.com/v1alpha1 + kind: GenericResourceService + type: MatchName + exec: + - alias: Primary + command: + - bash + - -c + - mysql -uadmin -padmin -h127.0.0.1 -P6032 --prompt="ProxySQLAdmin > " + container: proxysql + help: | + SELECT * FROM mysql_servers; + serviceNameTemplate: '{{- .metadata.name -}}' resource: group: kubedb.com kind: ProxySQL diff --git a/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/kubedb.com/v1/redises.yaml b/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/kubedb.com/v1/redises.yaml index 68f0267a97..da5d0b4abc 100644 --- a/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/kubedb.com/v1/redises.yaml +++ b/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/kubedb.com/v1/redises.yaml @@ -9,6 +9,108 @@ metadata: k8s.io/version: v1 name: kubedb.com-v1-redises spec: + connections: + - labels: + - offshoot + level: Controller + namespace: + path: metadata.namespace + selector: + matchLabels: + app.kubernetes.io/instance: '{.metadata.name}' + app.kubernetes.io/managed-by: kubedb.com + app.kubernetes.io/name: redises.kubedb.com + target: + apiVersion: apps.k8s.appscode.com/v1 + kind: PetSet + type: MatchSelector + - labels: + - auth_secret + references: + - '{.spec.authSecret.name}' + target: + apiVersion: v1 + kind: Secret + type: MatchRef + - labels: + - catalog + references: + - '{.spec.version}' + target: + apiVersion: catalog.kubedb.com/v1alpha1 + kind: RedisVersion + type: MatchRef + - labels: + - cert_issuer + namespace: + path: metadata.namespace + references: + - '{.spec.tls.issuerRef.name},{.metadata.namespace}' + target: + apiVersion: cert-manager.io/v1 + kind: Issuer + type: MatchRef + - labels: + - cert_issuer + references: + - '{.spec.tls.issuerRef.name}' + target: + apiVersion: cert-manager.io/v1 + kind: ClusterIssuer + type: MatchRef + - labels: + - view + nameTemplate: '{.metadata.name}~Redis.kubedb.com' + namespace: + path: metadata.namespace + target: + apiVersion: core.k8s.appscode.com/v1alpha1 + kind: GenericResource + type: MatchName + - labels: + - view + nameTemplate: '{.metadata.name}~Redis.kubedb.com' + namespace: + path: metadata.namespace + target: + apiVersion: core.k8s.appscode.com/v1alpha1 + kind: GenericResourceService + type: MatchName + - labels: + - view + nameTemplate: '{.metadata.name}' + namespace: + path: metadata.namespace + target: + apiVersion: ui.kubedb.com/v1alpha1 + kind: RedisInsight + type: MatchName + - labels: + - view + nameTemplate: '{.metadata.name}' + namespace: + path: metadata.namespace + target: + apiVersion: ui.kubedb.com/v1alpha1 + kind: RedisQueries + type: MatchName + - labels: + - view + nameTemplate: '{.metadata.name}' + namespace: + path: metadata.namespace + target: + apiVersion: ui.kubedb.com/v1alpha1 + kind: RedisSchemaOverview + type: MatchName + exec: + - alias: Primary + command: + - redis-cli + container: redis + help: | + ping + serviceNameTemplate: '{{- .metadata.name -}}' resource: group: kubedb.com kind: Redis @@ -143,10 +245,10 @@ spec: type: object cluster: properties: - master: + replicas: format: int32 type: integer - replicas: + shards: format: int32 type: integer type: object diff --git a/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/kubedb.com/v1alpha2/druids.yaml b/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/kubedb.com/v1alpha2/druids.yaml index f1ce576269..2647311dba 100644 --- a/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/kubedb.com/v1alpha2/druids.yaml +++ b/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/kubedb.com/v1alpha2/druids.yaml @@ -21,8 +21,8 @@ spec: app.kubernetes.io/managed-by: kubedb.com app.kubernetes.io/name: druids.kubedb.com target: - apiVersion: apps/v1 - kind: StatefulSet + apiVersion: apps.k8s.appscode.com/v1 + kind: PetSet type: MatchSelector - labels: - connect_via diff --git a/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/kubedb.com/v1alpha2/elasticsearches.yaml b/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/kubedb.com/v1alpha2/elasticsearches.yaml index 55f707b8d9..4183abb3cc 100644 --- a/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/kubedb.com/v1alpha2/elasticsearches.yaml +++ b/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/kubedb.com/v1alpha2/elasticsearches.yaml @@ -21,8 +21,8 @@ spec: app.kubernetes.io/managed-by: kubedb.com app.kubernetes.io/name: elasticsearches.kubedb.com target: - apiVersion: apps/v1 - kind: StatefulSet + apiVersion: apps.k8s.appscode.com/v1 + kind: PetSet type: MatchSelector - labels: - auth_secret diff --git a/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/kubedb.com/v1alpha2/etcds.yaml b/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/kubedb.com/v1alpha2/etcds.yaml index 777a628c26..95cf02fe36 100644 --- a/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/kubedb.com/v1alpha2/etcds.yaml +++ b/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/kubedb.com/v1alpha2/etcds.yaml @@ -21,8 +21,8 @@ spec: app.kubernetes.io/managed-by: kubedb.com app.kubernetes.io/name: etcds.kubedb.com target: - apiVersion: apps/v1 - kind: StatefulSet + apiVersion: apps.k8s.appscode.com/v1 + kind: PetSet type: MatchSelector - labels: - connect_via diff --git a/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/kubedb.com/v1alpha2/ferretdbs.yaml b/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/kubedb.com/v1alpha2/ferretdbs.yaml index ae7c7ee786..ef746b84bc 100644 --- a/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/kubedb.com/v1alpha2/ferretdbs.yaml +++ b/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/kubedb.com/v1alpha2/ferretdbs.yaml @@ -21,8 +21,8 @@ spec: app.kubernetes.io/managed-by: kubedb.com app.kubernetes.io/name: ferretdbs.kubedb.com target: - apiVersion: apps/v1 - kind: StatefulSet + apiVersion: apps.k8s.appscode.com/v1 + kind: PetSet type: MatchSelector - labels: - connect_via diff --git a/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/kubedb.com/v1alpha2/kafkas.yaml b/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/kubedb.com/v1alpha2/kafkas.yaml index 52da06d9d4..20ff695d42 100644 --- a/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/kubedb.com/v1alpha2/kafkas.yaml +++ b/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/kubedb.com/v1alpha2/kafkas.yaml @@ -21,8 +21,8 @@ spec: app.kubernetes.io/managed-by: kubedb.com app.kubernetes.io/name: kafkas.kubedb.com target: - apiVersion: apps/v1 - kind: StatefulSet + apiVersion: apps.k8s.appscode.com/v1 + kind: PetSet type: MatchSelector - labels: - connect_via diff --git a/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/kubedb.com/v1alpha2/mariadbs.yaml b/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/kubedb.com/v1alpha2/mariadbs.yaml index a1bf40b299..8b4146b431 100644 --- a/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/kubedb.com/v1alpha2/mariadbs.yaml +++ b/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/kubedb.com/v1alpha2/mariadbs.yaml @@ -21,8 +21,8 @@ spec: app.kubernetes.io/managed-by: kubedb.com app.kubernetes.io/name: mariadbs.kubedb.com target: - apiVersion: apps/v1 - kind: StatefulSet + apiVersion: apps.k8s.appscode.com/v1 + kind: PetSet type: MatchSelector - labels: - auth_secret diff --git a/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/kubedb.com/v1alpha2/memcacheds.yaml b/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/kubedb.com/v1alpha2/memcacheds.yaml index 2d980cf19c..54497c4bbf 100644 --- a/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/kubedb.com/v1alpha2/memcacheds.yaml +++ b/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/kubedb.com/v1alpha2/memcacheds.yaml @@ -21,8 +21,8 @@ spec: app.kubernetes.io/managed-by: kubedb.com app.kubernetes.io/name: memcacheds.kubedb.com target: - apiVersion: apps/v1 - kind: StatefulSet + apiVersion: apps.k8s.appscode.com/v1 + kind: PetSet type: MatchSelector - labels: - connect_via diff --git a/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/kubedb.com/v1alpha2/mongodbs.yaml b/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/kubedb.com/v1alpha2/mongodbs.yaml index 6b7725404d..b24a59af2b 100644 --- a/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/kubedb.com/v1alpha2/mongodbs.yaml +++ b/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/kubedb.com/v1alpha2/mongodbs.yaml @@ -21,8 +21,8 @@ spec: app.kubernetes.io/managed-by: kubedb.com app.kubernetes.io/name: mongodbs.kubedb.com target: - apiVersion: apps/v1 - kind: StatefulSet + apiVersion: apps.k8s.appscode.com/v1 + kind: PetSet type: MatchSelector - labels: - auth_secret diff --git a/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/kubedb.com/v1alpha2/mssqlservers.yaml b/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/kubedb.com/v1alpha2/mssqlservers.yaml index fb51592f39..497c9c850a 100644 --- a/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/kubedb.com/v1alpha2/mssqlservers.yaml +++ b/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/kubedb.com/v1alpha2/mssqlservers.yaml @@ -21,8 +21,8 @@ spec: app.kubernetes.io/managed-by: kubedb.com app.kubernetes.io/name: mssqlservers.kubedb.com target: - apiVersion: apps/v1 - kind: StatefulSet + apiVersion: apps.k8s.appscode.com/v1 + kind: PetSet type: MatchSelector - labels: - connect_via diff --git a/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/kubedb.com/v1alpha2/mysqls.yaml b/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/kubedb.com/v1alpha2/mysqls.yaml index 5483a691bb..08bdd005fb 100644 --- a/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/kubedb.com/v1alpha2/mysqls.yaml +++ b/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/kubedb.com/v1alpha2/mysqls.yaml @@ -21,8 +21,8 @@ spec: app.kubernetes.io/managed-by: kubedb.com app.kubernetes.io/name: mysqls.kubedb.com target: - apiVersion: apps/v1 - kind: StatefulSet + apiVersion: apps.k8s.appscode.com/v1 + kind: PetSet type: MatchSelector - labels: - auth_secret diff --git a/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/kubedb.com/v1alpha2/perconaxtradbs.yaml b/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/kubedb.com/v1alpha2/perconaxtradbs.yaml index 648039d6f9..57357f9c7d 100644 --- a/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/kubedb.com/v1alpha2/perconaxtradbs.yaml +++ b/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/kubedb.com/v1alpha2/perconaxtradbs.yaml @@ -21,8 +21,8 @@ spec: app.kubernetes.io/managed-by: kubedb.com app.kubernetes.io/name: perconaxtradbs.kubedb.com target: - apiVersion: apps/v1 - kind: StatefulSet + apiVersion: apps.k8s.appscode.com/v1 + kind: PetSet type: MatchSelector - labels: - connect_via diff --git a/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/kubedb.com/v1alpha2/pgbouncers.yaml b/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/kubedb.com/v1alpha2/pgbouncers.yaml index b0dda125c5..8265ebdc51 100644 --- a/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/kubedb.com/v1alpha2/pgbouncers.yaml +++ b/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/kubedb.com/v1alpha2/pgbouncers.yaml @@ -21,8 +21,8 @@ spec: app.kubernetes.io/managed-by: kubedb.com app.kubernetes.io/name: pgbouncers.kubedb.com target: - apiVersion: apps/v1 - kind: StatefulSet + apiVersion: apps.k8s.appscode.com/v1 + kind: PetSet type: MatchSelector - labels: - connect_via diff --git a/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/kubedb.com/v1alpha2/pgpools.yaml b/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/kubedb.com/v1alpha2/pgpools.yaml index 61f84d7930..89566db4a1 100644 --- a/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/kubedb.com/v1alpha2/pgpools.yaml +++ b/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/kubedb.com/v1alpha2/pgpools.yaml @@ -21,8 +21,8 @@ spec: app.kubernetes.io/managed-by: kubedb.com app.kubernetes.io/name: pgpools.kubedb.com target: - apiVersion: apps/v1 - kind: StatefulSet + apiVersion: apps.k8s.appscode.com/v1 + kind: PetSet type: MatchSelector - labels: - connect_via diff --git a/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/kubedb.com/v1alpha2/postgreses.yaml b/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/kubedb.com/v1alpha2/postgreses.yaml index 0f4a32aece..b80adad43c 100644 --- a/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/kubedb.com/v1alpha2/postgreses.yaml +++ b/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/kubedb.com/v1alpha2/postgreses.yaml @@ -21,8 +21,8 @@ spec: app.kubernetes.io/managed-by: kubedb.com app.kubernetes.io/name: postgreses.kubedb.com target: - apiVersion: apps/v1 - kind: StatefulSet + apiVersion: apps.k8s.appscode.com/v1 + kind: PetSet type: MatchSelector - labels: - auth_secret diff --git a/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/kubedb.com/v1alpha2/proxysqls.yaml b/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/kubedb.com/v1alpha2/proxysqls.yaml index e68b8484a1..2da80d1f81 100644 --- a/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/kubedb.com/v1alpha2/proxysqls.yaml +++ b/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/kubedb.com/v1alpha2/proxysqls.yaml @@ -21,8 +21,8 @@ spec: app.kubernetes.io/managed-by: kubedb.com app.kubernetes.io/name: proxysqls.kubedb.com target: - apiVersion: apps/v1 - kind: StatefulSet + apiVersion: apps.k8s.appscode.com/v1 + kind: PetSet type: MatchSelector - labels: - connect_via diff --git a/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/kubedb.com/v1alpha2/rabbitmqs.yaml b/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/kubedb.com/v1alpha2/rabbitmqs.yaml index d15219c43b..cc3a985983 100644 --- a/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/kubedb.com/v1alpha2/rabbitmqs.yaml +++ b/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/kubedb.com/v1alpha2/rabbitmqs.yaml @@ -21,8 +21,8 @@ spec: app.kubernetes.io/managed-by: kubedb.com app.kubernetes.io/name: rabbitmqs.kubedb.com target: - apiVersion: apps/v1 - kind: StatefulSet + apiVersion: apps.k8s.appscode.com/v1 + kind: PetSet type: MatchSelector - labels: - connect_via diff --git a/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/kubedb.com/v1alpha2/redises.yaml b/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/kubedb.com/v1alpha2/redises.yaml index 50ef852f5b..f2b9c483db 100644 --- a/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/kubedb.com/v1alpha2/redises.yaml +++ b/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/kubedb.com/v1alpha2/redises.yaml @@ -21,8 +21,8 @@ spec: app.kubernetes.io/managed-by: kubedb.com app.kubernetes.io/name: redises.kubedb.com target: - apiVersion: apps/v1 - kind: StatefulSet + apiVersion: apps.k8s.appscode.com/v1 + kind: PetSet type: MatchSelector - labels: - auth_secret diff --git a/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/kubedb.com/v1alpha2/singlestores.yaml b/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/kubedb.com/v1alpha2/singlestores.yaml index 6629ac6364..24866ec058 100644 --- a/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/kubedb.com/v1alpha2/singlestores.yaml +++ b/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/kubedb.com/v1alpha2/singlestores.yaml @@ -21,8 +21,8 @@ spec: app.kubernetes.io/managed-by: kubedb.com app.kubernetes.io/name: singlestores.kubedb.com target: - apiVersion: apps/v1 - kind: StatefulSet + apiVersion: apps.k8s.appscode.com/v1 + kind: PetSet type: MatchSelector - labels: - connect_via diff --git a/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/kubedb.com/v1alpha2/solrs.yaml b/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/kubedb.com/v1alpha2/solrs.yaml index eab4d4bc61..d030debf83 100644 --- a/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/kubedb.com/v1alpha2/solrs.yaml +++ b/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/kubedb.com/v1alpha2/solrs.yaml @@ -21,8 +21,8 @@ spec: app.kubernetes.io/managed-by: kubedb.com app.kubernetes.io/name: solrs.kubedb.com target: - apiVersion: apps/v1 - kind: StatefulSet + apiVersion: apps.k8s.appscode.com/v1 + kind: PetSet type: MatchSelector - labels: - connect_via diff --git a/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/kubedb.com/v1alpha2/zookeepers.yaml b/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/kubedb.com/v1alpha2/zookeepers.yaml index c8ee4f0e3d..bf33e7fabd 100644 --- a/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/kubedb.com/v1alpha2/zookeepers.yaml +++ b/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/kubedb.com/v1alpha2/zookeepers.yaml @@ -21,8 +21,8 @@ spec: app.kubernetes.io/managed-by: kubedb.com app.kubernetes.io/name: zookeepers.kubedb.com target: - apiVersion: apps/v1 - kind: StatefulSet + apiVersion: apps.k8s.appscode.com/v1 + kind: PetSet type: MatchSelector - labels: - connect_via diff --git a/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/ops.kubedb.com/v1alpha1/pgbounceropsrequests.yaml b/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/ops.kubedb.com/v1alpha1/pgbounceropsrequests.yaml index 47a8e15be9..6870fdc30c 100644 --- a/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/ops.kubedb.com/v1alpha1/pgbounceropsrequests.yaml +++ b/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/ops.kubedb.com/v1alpha1/pgbounceropsrequests.yaml @@ -82,6 +82,10 @@ spec: configuration: type: object horizontalScaling: + properties: + replicas: + format: int32 + type: integer type: object restart: type: object @@ -92,6 +96,8 @@ spec: type: string type: object x-kubernetes-map-type: atomic + timeout: + type: string tls: properties: certificates: @@ -199,16 +205,90 @@ spec: type: object type: enum: - - UpdateVersion - HorizontalScaling - VerticalScaling - - Restart - - Reconfigure - - ReconfigureTLS type: string verticalScaling: properties: - readinessCriteria: + exporter: + properties: + resources: + properties: + claims: + items: + properties: + name: + type: string + required: + - name + type: object + type: array + x-kubernetes-list-map-keys: + - name + x-kubernetes-list-type: map + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + type: object + pgbouncer: + properties: + nodeSelectionPolicy: + type: string + resources: + properties: + claims: + items: + properties: + name: + type: string + required: + - name + type: object + type: array + x-kubernetes-list-map-keys: + - name + x-kubernetes-list-type: map + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + topology: + properties: + key: + type: string + value: + type: string + required: + - key + - value + type: object type: object type: object required: diff --git a/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/ops.kubedb.com/v1alpha1/redisopsrequests.yaml b/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/ops.kubedb.com/v1alpha1/redisopsrequests.yaml index 832af1d5e8..bc22e84a10 100644 --- a/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/ops.kubedb.com/v1alpha1/redisopsrequests.yaml +++ b/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/ops.kubedb.com/v1alpha1/redisopsrequests.yaml @@ -97,10 +97,10 @@ spec: x-kubernetes-map-type: atomic horizontalScaling: properties: - master: + replicas: format: int32 type: integer - replicas: + shards: format: int32 type: integer type: object diff --git a/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/ops.kubedb.com/v1alpha1/solropsrequests.yaml b/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/ops.kubedb.com/v1alpha1/solropsrequests.yaml new file mode 100644 index 0000000000..e36dee705f --- /dev/null +++ b/vendor/kmodules.xyz/resource-metadata/hub/resourcedescriptors/ops.kubedb.com/v1alpha1/solropsrequests.yaml @@ -0,0 +1,85 @@ +apiVersion: meta.k8s.appscode.com/v1alpha1 +kind: ResourceDescriptor +metadata: + creationTimestamp: null + labels: + k8s.io/group: ops.kubedb.com + k8s.io/kind: SolrOpsRequest + k8s.io/resource: solropsrequests + k8s.io/version: v1alpha1 + name: ops.kubedb.com-v1alpha1-solropsrequests +spec: + resource: + group: ops.kubedb.com + kind: SolrOpsRequest + name: solropsrequests + scope: Namespaced + version: v1alpha1 + validation: + openAPIV3Schema: + properties: + apiVersion: + type: string + kind: + type: string + metadata: + properties: + name: + description: 'Name must be unique within a namespace. Is required when + creating resources, although some resources may allow a client to + request the generation of an appropriate name automatically. Name + is primarily intended for creation idempotence and configuration definition. + Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names' + type: string + namespace: + description: "Namespace defines the space within which each name must + be unique. An empty namespace is equivalent to the \"default\" namespace, + but \"default\" is the canonical representation. Not all objects are + required to be scoped to a namespace - the value of this field for + those objects will be empty. \n Must be a DNS_LABEL. Cannot be updated. + More info: http://kubernetes.io/docs/user-guide/namespaces" + type: string + labels: + additionalProperties: + type: string + description: 'Map of string keys and values that can be used to organize + and categorize (scope and select) objects. May match selectors of + replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels' + type: object + annotations: + additionalProperties: + type: string + description: 'Annotations is an unstructured key value map stored with + a resource that may be set by external tools to store and retrieve + arbitrary metadata. They are not queryable and should be preserved + when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations' + type: object + type: object + spec: + properties: + apply: + default: IfReady + enum: + - IfReady + - Always + type: string + databaseRef: + properties: + name: + default: "" + type: string + type: object + x-kubernetes-map-type: atomic + restart: + type: object + timeout: + type: string + type: + enum: + - Restart + type: string + required: + - databaseRef + - type + type: object + type: object diff --git a/vendor/kmodules.xyz/resource-metadata/hub/resourceeditors/apps.k8s.appscode.com/v1/petsets.yaml b/vendor/kmodules.xyz/resource-metadata/hub/resourceeditors/apps.k8s.appscode.com/v1/petsets.yaml new file mode 100644 index 0000000000..6fbbf07044 --- /dev/null +++ b/vendor/kmodules.xyz/resource-metadata/hub/resourceeditors/apps.k8s.appscode.com/v1/petsets.yaml @@ -0,0 +1,31 @@ +apiVersion: ui.k8s.appscode.com/v1alpha1 +kind: ResourceEditor +metadata: + creationTimestamp: null + labels: + k8s.io/group: apps.k8s.appscode.com + k8s.io/kind: PetSet + k8s.io/resource: petsets + k8s.io/version: v1 + name: apps.k8s.appscode.com-v1-petsets +spec: + icons: + - src: https://cdn.appscode.com/k8s/icons/apps/statefulsets.svg + type: image/svg+xml + - src: https://cdn.appscode.com/k8s/icons/apps/statefulsets.png + type: image/png + resource: + group: apps.k8s.appscode.com + kind: PetSet + name: petsets + scope: Namespaced + version: v1 + ui: + editor: + name: apps.k8s.appscode.com-petset-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.4.21 + enforceQuota: false diff --git a/vendor/kmodules.xyz/resource-metadata/hub/resourceeditors/apps.k8s.appscode.com/v1/placementpolicies.yaml b/vendor/kmodules.xyz/resource-metadata/hub/resourceeditors/apps.k8s.appscode.com/v1/placementpolicies.yaml new file mode 100644 index 0000000000..af72c0eb38 --- /dev/null +++ b/vendor/kmodules.xyz/resource-metadata/hub/resourceeditors/apps.k8s.appscode.com/v1/placementpolicies.yaml @@ -0,0 +1,17 @@ +apiVersion: ui.k8s.appscode.com/v1alpha1 +kind: ResourceEditor +metadata: + creationTimestamp: null + labels: + k8s.io/group: apps.k8s.appscode.com + k8s.io/kind: PlacementPolicy + k8s.io/resource: placementpolicies + k8s.io/version: v1 + name: apps.k8s.appscode.com-v1-placementpolicies +spec: + resource: + group: apps.k8s.appscode.com + kind: PlacementPolicy + name: placementpolicies + scope: Cluster + version: v1 diff --git a/vendor/kmodules.xyz/resource-metadata/hub/resourceeditors/kubedb.com/v1/elasticsearches.yaml b/vendor/kmodules.xyz/resource-metadata/hub/resourceeditors/kubedb.com/v1/elasticsearches.yaml index a9e885b3e6..bfadced085 100644 --- a/vendor/kmodules.xyz/resource-metadata/hub/resourceeditors/kubedb.com/v1/elasticsearches.yaml +++ b/vendor/kmodules.xyz/resource-metadata/hub/resourceeditors/kubedb.com/v1/elasticsearches.yaml @@ -9,9 +9,172 @@ metadata: k8s.io/version: v1 name: kubedb.com-v1-elasticsearches spec: + icons: + - src: https://cdn.appscode.com/k8s/icons/kubedb.com/elasticsearches.svg + type: image/svg+xml + - src: https://cdn.appscode.com/k8s/icons/kubedb.com/elasticsearches.png + type: image/png resource: group: kubedb.com kind: Elasticsearch name: elasticsearches scope: Namespaced version: v1 + ui: + actions: + - items: + - editor: + name: kubedbcom-elasticsearch-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.4.20 + enforceQuota: false + flow: standalone-edit + icons: + - src: https://cdn.appscode.com/k8s/icons/action-icons/backup.svg + type: image/svg+xml + name: Backup + operationId: edit-self-backupconfiguration + - editor: + name: stashappscodecom-restoresession-editor-options + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.4.20 + enforceQuota: false + flow: standalone-create + icons: + - src: https://cdn.appscode.com/k8s/icons/action-icons/restore.svg + type: image/svg+xml + name: Restore + operationId: create-restoresession + name: Backups + - items: + - editor: + name: opskubedbcom-elasticsearchopsrequest-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.4.20 + enforceQuota: false + flow: standalone-create + icons: + - src: https://cdn.appscode.com/k8s/icons/action-icons/version.svg + type: image/svg+xml + name: Update Version + operationId: create-opsrequest-upgrade + - editor: + name: opskubedbcom-elasticsearchopsrequest-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.4.20 + enforceQuota: false + flow: standalone-create + icons: + - src: https://cdn.appscode.com/k8s/icons/action-icons/restart.svg + type: image/svg+xml + name: Restart + operationId: create-opsrequest-restart + name: Operations + - items: + - editor: + name: opskubedbcom-elasticsearchopsrequest-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.4.20 + enforceQuota: true + flow: standalone-create + icons: + - src: https://cdn.appscode.com/k8s/icons/action-icons/horizontal_scale.svg + type: image/svg+xml + name: Horizontal Scale + operationId: create-opsrequest-horizontalscaling + - editor: + name: opskubedbcom-elasticsearchopsrequest-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.4.20 + enforceQuota: true + flow: standalone-create + icons: + - src: https://cdn.appscode.com/k8s/icons/action-icons/vertical_scale.svg + type: image/svg+xml + name: Vertical Scale + operationId: create-opsrequest-verticalscaling + - editor: + name: opskubedbcom-elasticsearchopsrequest-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.4.20 + enforceQuota: true + flow: standalone-create + icons: + - src: https://cdn.appscode.com/k8s/icons/action-icons/expand.svg + type: image/svg+xml + name: Expand Volume + operationId: create-opsrequest-volumeexpansion + name: Scaling + - items: + - disabledTemplate: | + {{ not (and (hasKey .spec "tls") ( hasKey .spec.tls "issuerRef"))}} + editor: + name: opskubedbcom-elasticsearchopsrequest-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.4.20 + enforceQuota: false + flow: standalone-create + icons: + - src: https://cdn.appscode.com/k8s/icons/action-icons/configure.svg + type: image/svg+xml + name: TLS Configure + operationId: create-opsrequest-reconfiguretls + - editor: + name: kubedbcom-elasticsearch-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.4.20 + enforceQuota: false + flow: standalone-edit + icons: + - src: https://cdn.appscode.com/k8s/icons/action-icons/monitor.svg + type: image/svg+xml + name: Monitoring + operationId: edit-self-monitoring + name: Security & Monitoring + editor: + name: kubedbcom-elasticsearch-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.4.21 + enforceQuota: true + options: + name: kubedbcom-elasticsearch-editor-options + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.4.20 + variants: + - name: default + selector: + matchLabels: + charts.x-helm.dev/is-default-preset: "true" diff --git a/vendor/kmodules.xyz/resource-metadata/hub/resourceeditors/kubedb.com/v1/kafkas.yaml b/vendor/kmodules.xyz/resource-metadata/hub/resourceeditors/kubedb.com/v1/kafkas.yaml index 2f7bfe7a44..f5d7853476 100644 --- a/vendor/kmodules.xyz/resource-metadata/hub/resourceeditors/kubedb.com/v1/kafkas.yaml +++ b/vendor/kmodules.xyz/resource-metadata/hub/resourceeditors/kubedb.com/v1/kafkas.yaml @@ -9,9 +9,52 @@ metadata: k8s.io/version: v1 name: kubedb.com-v1-kafkas spec: + icons: + - src: https://cdn.appscode.com/k8s/icons/kubedb.com/kafkas.svg + type: image/svg+xml + - src: https://cdn.appscode.com/k8s/icons/kubedb.com/kafkas.png + type: image/png resource: group: kubedb.com kind: Kafka name: kafkas scope: Namespaced version: v1 + ui: + actions: + - items: + - editor: + name: kubedbcom-kafka-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.4.20 + enforceQuota: false + flow: standalone-edit + icons: + - src: https://cdn.appscode.com/k8s/icons/action-icons/monitor.svg + type: image/svg+xml + name: Monitoring + operationId: edit-self-monitoring + name: Security & Monitoring + editor: + name: kubedbcom-kafka-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.4.21 + enforceQuota: true + options: + name: kubedbcom-kafka-editor-options + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.4.20 + variants: + - name: default + selector: + matchLabels: + charts.x-helm.dev/is-default-preset: "true" diff --git a/vendor/kmodules.xyz/resource-metadata/hub/resourceeditors/kubedb.com/v1/mariadbs.yaml b/vendor/kmodules.xyz/resource-metadata/hub/resourceeditors/kubedb.com/v1/mariadbs.yaml index 3ed03f3629..26e3d8e207 100644 --- a/vendor/kmodules.xyz/resource-metadata/hub/resourceeditors/kubedb.com/v1/mariadbs.yaml +++ b/vendor/kmodules.xyz/resource-metadata/hub/resourceeditors/kubedb.com/v1/mariadbs.yaml @@ -9,9 +9,186 @@ metadata: k8s.io/version: v1 name: kubedb.com-v1-mariadbs spec: + icons: + - src: https://cdn.appscode.com/k8s/icons/kubedb.com/mariadbs.svg + type: image/svg+xml + - src: https://cdn.appscode.com/k8s/icons/kubedb.com/mariadbs.png + type: image/png resource: group: kubedb.com kind: MariaDB name: mariadbs scope: Namespaced version: v1 + ui: + actions: + - items: + - editor: + name: kubedbcom-mariadb-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.4.20 + enforceQuota: false + flow: standalone-edit + icons: + - src: https://cdn.appscode.com/k8s/icons/action-icons/backup.svg + type: image/svg+xml + name: Backup + operationId: edit-self-backupconfiguration + - editor: + name: stashappscodecom-restoresession-editor-options + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.4.20 + enforceQuota: false + flow: standalone-create + icons: + - src: https://cdn.appscode.com/k8s/icons/action-icons/restore.svg + type: image/svg+xml + name: Restore + operationId: create-restoresession + name: Backups + - items: + - editor: + name: opskubedbcom-mariadbopsrequest-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.4.20 + enforceQuota: false + flow: standalone-create + icons: + - src: https://cdn.appscode.com/k8s/icons/action-icons/version.svg + type: image/svg+xml + name: Update Version + operationId: create-opsrequest-upgrade + - editor: + name: opskubedbcom-mariadbopsrequest-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.4.20 + enforceQuota: false + flow: standalone-create + icons: + - src: https://cdn.appscode.com/k8s/icons/action-icons/restart.svg + type: image/svg+xml + name: Restart + operationId: create-opsrequest-restart + - editor: + name: opskubedbcom-mariadbopsrequest-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.4.20 + enforceQuota: false + flow: standalone-create + icons: + - src: https://cdn.appscode.com/k8s/icons/action-icons/reconfigure.svg + type: image/svg+xml + name: Reconfigure + operationId: create-opsrequest-reconfigure + name: Operations + - items: + - disabledTemplate: | + {{ not (gt .spec.replicas 1) }} + editor: + name: opskubedbcom-mariadbopsrequest-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.4.20 + enforceQuota: true + flow: standalone-create + icons: + - src: https://cdn.appscode.com/k8s/icons/action-icons/horizontal_scale.svg + type: image/svg+xml + name: Horizontal Scale + operationId: create-opsrequest-horizontalscaling + - editor: + name: opskubedbcom-mariadbopsrequest-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.4.20 + enforceQuota: true + flow: standalone-create + icons: + - src: https://cdn.appscode.com/k8s/icons/action-icons/vertical_scale.svg + type: image/svg+xml + name: Vertical Scale + operationId: create-opsrequest-verticalscaling + - editor: + name: opskubedbcom-mariadbopsrequest-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.4.20 + enforceQuota: true + flow: standalone-create + icons: + - src: https://cdn.appscode.com/k8s/icons/action-icons/expand.svg + type: image/svg+xml + name: Expand Volume + operationId: create-opsrequest-volumeexpansion + name: Scaling + - items: + - editor: + name: opskubedbcom-mariadbopsrequest-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.4.20 + enforceQuota: false + flow: standalone-create + icons: + - src: https://cdn.appscode.com/k8s/icons/action-icons/configure.svg + type: image/svg+xml + name: TLS Configure + operationId: create-opsrequest-reconfiguretls + - editor: + name: kubedbcom-mariadb-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.4.20 + enforceQuota: false + flow: standalone-edit + icons: + - src: https://cdn.appscode.com/k8s/icons/action-icons/monitor.svg + type: image/svg+xml + name: Monitoring + operationId: edit-self-monitoring + name: Security & Monitoring + editor: + name: kubedbcom-mariadb-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.4.21 + enforceQuota: true + options: + name: kubedbcom-mariadb-editor-options + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.4.20 + variants: + - name: default + selector: + matchLabels: + charts.x-helm.dev/is-default-preset: "true" diff --git a/vendor/kmodules.xyz/resource-metadata/hub/resourceeditors/kubedb.com/v1/memcacheds.yaml b/vendor/kmodules.xyz/resource-metadata/hub/resourceeditors/kubedb.com/v1/memcacheds.yaml index 1e788f8e99..ad503b1bbf 100644 --- a/vendor/kmodules.xyz/resource-metadata/hub/resourceeditors/kubedb.com/v1/memcacheds.yaml +++ b/vendor/kmodules.xyz/resource-metadata/hub/resourceeditors/kubedb.com/v1/memcacheds.yaml @@ -9,9 +9,35 @@ metadata: k8s.io/version: v1 name: kubedb.com-v1-memcacheds spec: + icons: + - src: https://cdn.appscode.com/k8s/icons/kubedb.com/memcacheds.svg + type: image/svg+xml + - src: https://cdn.appscode.com/k8s/icons/kubedb.com/memcacheds.png + type: image/png resource: group: kubedb.com kind: Memcached name: memcacheds scope: Namespaced version: v1 + ui: + editor: + name: kubedbcom-memcached-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.4.21 + enforceQuota: false + options: + name: kubedbcom-memcached-editor-options + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.4.20 + variants: + - name: default + selector: + matchLabels: + charts.x-helm.dev/is-default-preset: "true" diff --git a/vendor/kmodules.xyz/resource-metadata/hub/resourceeditors/kubedb.com/v1/mongodbs.yaml b/vendor/kmodules.xyz/resource-metadata/hub/resourceeditors/kubedb.com/v1/mongodbs.yaml index daeded46ae..857951fed3 100644 --- a/vendor/kmodules.xyz/resource-metadata/hub/resourceeditors/kubedb.com/v1/mongodbs.yaml +++ b/vendor/kmodules.xyz/resource-metadata/hub/resourceeditors/kubedb.com/v1/mongodbs.yaml @@ -9,9 +9,216 @@ metadata: k8s.io/version: v1 name: kubedb.com-v1-mongodbs spec: + icons: + - src: https://cdn.appscode.com/k8s/icons/kubedb.com/mongodbs.svg + type: image/svg+xml + - src: https://cdn.appscode.com/k8s/icons/kubedb.com/mongodbs.png + type: image/png resource: group: kubedb.com kind: MongoDB name: mongodbs scope: Namespaced version: v1 + ui: + actions: + - items: + - editor: + name: kubedbcom-mongodb-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.4.20 + enforceQuota: false + flow: standalone-edit + icons: + - src: https://cdn.appscode.com/k8s/icons/action-icons/backup.svg + type: image/svg+xml + name: Backup + operationId: edit-self-backupconfiguration + - editor: + name: stashappscodecom-restoresession-editor-options + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.4.20 + enforceQuota: false + flow: standalone-create + icons: + - src: https://cdn.appscode.com/k8s/icons/action-icons/restore.svg + type: image/svg+xml + name: Restore + operationId: create-restoresession + name: Backups + - items: + - editor: + name: opskubedbcom-mongodbopsrequest-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.4.20 + enforceQuota: false + flow: standalone-create + icons: + - src: https://cdn.appscode.com/k8s/icons/action-icons/version.svg + type: image/svg+xml + name: Update Version + operationId: create-opsrequest-upgrade + - editor: + name: opskubedbcom-mongodbopsrequest-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.4.20 + enforceQuota: false + flow: standalone-create + icons: + - src: https://cdn.appscode.com/k8s/icons/action-icons/restart.svg + type: image/svg+xml + name: Restart + operationId: create-opsrequest-restart + - editor: + name: opskubedbcom-mongodbopsrequest-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.4.20 + enforceQuota: false + flow: standalone-create + icons: + - src: https://cdn.appscode.com/k8s/icons/action-icons/reconfigure.svg + type: image/svg+xml + name: Reconfigure + operationId: create-opsrequest-reconfigure + name: Operations + - items: + - disabledTemplate: | + {{ not (or (hasKey .spec "shardTopology") ( hasKey .spec "replicaSet"))}} + editor: + name: opskubedbcom-mongodbopsrequest-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.4.20 + enforceQuota: true + flow: standalone-create + icons: + - src: https://cdn.appscode.com/k8s/icons/action-icons/horizontal_scale.svg + type: image/svg+xml + name: Horizontal Scale + operationId: create-opsrequest-horizontalscaling + - editor: + name: opskubedbcom-mongodbopsrequest-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.4.20 + enforceQuota: true + flow: standalone-create + icons: + - src: https://cdn.appscode.com/k8s/icons/action-icons/vertical_scale.svg + type: image/svg+xml + name: Vertical Scale + operationId: create-opsrequest-verticalscaling + - editor: + name: opskubedbcom-mongodbopsrequest-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.4.20 + enforceQuota: true + flow: standalone-create + icons: + - src: https://cdn.appscode.com/k8s/icons/action-icons/expand.svg + type: image/svg+xml + name: Expand Volume + operationId: create-opsrequest-volumeexpansion + name: Scaling + - items: + - editor: + name: autoscalingkubedbcom-mongodbautoscaler-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.4.20 + enforceQuota: true + flow: standalone-create + icons: + - src: https://cdn.appscode.com/k8s/icons/action-icons/compute.svg + type: image/svg+xml + name: Compute + operationId: create-opsrequest-compute + - editor: + name: autoscalingkubedbcom-mongodbautoscaler-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.4.20 + enforceQuota: true + flow: standalone-create + icons: + - src: https://cdn.appscode.com/k8s/icons/action-icons/storage.svg + type: image/svg+xml + name: Storage + operationId: create-opsrequest-storage + name: Autoscaling + - items: + - editor: + name: opskubedbcom-mongodbopsrequest-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.4.20 + enforceQuota: false + flow: standalone-create + icons: + - src: https://cdn.appscode.com/k8s/icons/action-icons/configure.svg + type: image/svg+xml + name: TLS Configure + operationId: create-opsrequest-reconfiguretls + - editor: + name: kubedbcom-mongodb-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.4.20 + enforceQuota: false + flow: standalone-edit + icons: + - src: https://cdn.appscode.com/k8s/icons/action-icons/monitor.svg + type: image/svg+xml + name: Monitoring + operationId: edit-self-monitoring + name: Security & Monitoring + editor: + name: kubedbcom-mongodb-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.4.21 + enforceQuota: true + options: + name: kubedbcom-mongodb-editor-options + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.4.20 + variants: + - name: default + selector: + matchLabels: + charts.x-helm.dev/is-default-preset: "true" diff --git a/vendor/kmodules.xyz/resource-metadata/hub/resourceeditors/kubedb.com/v1/mysqls.yaml b/vendor/kmodules.xyz/resource-metadata/hub/resourceeditors/kubedb.com/v1/mysqls.yaml index b202cb24ad..8d2cb8b288 100644 --- a/vendor/kmodules.xyz/resource-metadata/hub/resourceeditors/kubedb.com/v1/mysqls.yaml +++ b/vendor/kmodules.xyz/resource-metadata/hub/resourceeditors/kubedb.com/v1/mysqls.yaml @@ -9,9 +9,186 @@ metadata: k8s.io/version: v1 name: kubedb.com-v1-mysqls spec: + icons: + - src: https://cdn.appscode.com/k8s/icons/kubedb.com/mysqls.svg + type: image/svg+xml + - src: https://cdn.appscode.com/k8s/icons/kubedb.com/mysqls.png + type: image/png resource: group: kubedb.com kind: MySQL name: mysqls scope: Namespaced version: v1 + ui: + actions: + - items: + - editor: + name: kubedbcom-mysql-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.4.20 + enforceQuota: false + flow: standalone-edit + icons: + - src: https://cdn.appscode.com/k8s/icons/action-icons/backup.svg + type: image/svg+xml + name: Backup + operationId: edit-self-backupconfiguration + - editor: + name: stashappscodecom-restoresession-editor-options + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.4.20 + enforceQuota: false + flow: standalone-create + icons: + - src: https://cdn.appscode.com/k8s/icons/action-icons/restore.svg + type: image/svg+xml + name: Restore + operationId: create-restoresession + name: Backups + - items: + - editor: + name: opskubedbcom-mysqlopsrequest-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.4.20 + enforceQuota: false + flow: standalone-create + icons: + - src: https://cdn.appscode.com/k8s/icons/action-icons/version.svg + type: image/svg+xml + name: Update Version + operationId: create-opsrequest-upgrade + - editor: + name: opskubedbcom-mysqlopsrequest-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.4.20 + enforceQuota: false + flow: standalone-create + icons: + - src: https://cdn.appscode.com/k8s/icons/action-icons/restart.svg + type: image/svg+xml + name: Restart + operationId: create-opsrequest-restart + - editor: + name: opskubedbcom-mysqlopsrequest-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.4.20 + enforceQuota: false + flow: standalone-create + icons: + - src: https://cdn.appscode.com/k8s/icons/action-icons/reconfigure.svg + type: image/svg+xml + name: Reconfigure + operationId: create-opsrequest-reconfigure + name: Operations + - items: + - disabledTemplate: | + {{ not (and (hasKey .spec "topology") (hasKey .spec.topology "mode")) }} + editor: + name: opskubedbcom-mysqlopsrequest-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.4.20 + enforceQuota: true + flow: standalone-create + icons: + - src: https://cdn.appscode.com/k8s/icons/action-icons/horizontal_scale.svg + type: image/svg+xml + name: Horizontal Scale + operationId: create-opsrequest-horizontalscaling + - editor: + name: opskubedbcom-mysqlopsrequest-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.4.20 + enforceQuota: true + flow: standalone-create + icons: + - src: https://cdn.appscode.com/k8s/icons/action-icons/vertical_scale.svg + type: image/svg+xml + name: Vertical Scale + operationId: create-opsrequest-verticalscaling + - editor: + name: opskubedbcom-mysqlopsrequest-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.4.20 + enforceQuota: true + flow: standalone-create + icons: + - src: https://cdn.appscode.com/k8s/icons/action-icons/expand.svg + type: image/svg+xml + name: Expand Volume + operationId: create-opsrequest-volumeexpansion + name: Scaling + - items: + - editor: + name: opskubedbcom-mysqlopsrequest-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.4.20 + enforceQuota: false + flow: standalone-create + icons: + - src: https://cdn.appscode.com/k8s/icons/action-icons/configure.svg + type: image/svg+xml + name: TLS Configure + operationId: create-opsrequest-reconfiguretls + - editor: + name: kubedbcom-mysql-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.4.20 + enforceQuota: false + flow: standalone-edit + icons: + - src: https://cdn.appscode.com/k8s/icons/action-icons/monitor.svg + type: image/svg+xml + name: Monitoring + operationId: edit-self-monitoring + name: Security & Monitoring + editor: + name: kubedbcom-mysql-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.4.21 + enforceQuota: true + options: + name: kubedbcom-mysql-editor-options + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.4.20 + variants: + - name: default + selector: + matchLabels: + charts.x-helm.dev/is-default-preset: "true" diff --git a/vendor/kmodules.xyz/resource-metadata/hub/resourceeditors/kubedb.com/v1/perconaxtradbs.yaml b/vendor/kmodules.xyz/resource-metadata/hub/resourceeditors/kubedb.com/v1/perconaxtradbs.yaml index 37384f29ff..b13b556cc1 100644 --- a/vendor/kmodules.xyz/resource-metadata/hub/resourceeditors/kubedb.com/v1/perconaxtradbs.yaml +++ b/vendor/kmodules.xyz/resource-metadata/hub/resourceeditors/kubedb.com/v1/perconaxtradbs.yaml @@ -9,9 +9,35 @@ metadata: k8s.io/version: v1 name: kubedb.com-v1-perconaxtradbs spec: + icons: + - src: https://cdn.appscode.com/k8s/icons/kubedb.com/perconaxtradbs.svg + type: image/svg+xml + - src: https://cdn.appscode.com/k8s/icons/kubedb.com/perconaxtradbs.png + type: image/png resource: group: kubedb.com kind: PerconaXtraDB name: perconaxtradbs scope: Namespaced version: v1 + ui: + editor: + name: kubedbcom-perconaxtradb-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.4.21 + enforceQuota: true + options: + name: kubedbcom-perconaxtradb-editor-options + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.4.20 + variants: + - name: default + selector: + matchLabels: + charts.x-helm.dev/is-default-preset: "true" diff --git a/vendor/kmodules.xyz/resource-metadata/hub/resourceeditors/kubedb.com/v1/pgbouncers.yaml b/vendor/kmodules.xyz/resource-metadata/hub/resourceeditors/kubedb.com/v1/pgbouncers.yaml index 33a2530648..a50b9342fb 100644 --- a/vendor/kmodules.xyz/resource-metadata/hub/resourceeditors/kubedb.com/v1/pgbouncers.yaml +++ b/vendor/kmodules.xyz/resource-metadata/hub/resourceeditors/kubedb.com/v1/pgbouncers.yaml @@ -9,9 +9,35 @@ metadata: k8s.io/version: v1 name: kubedb.com-v1-pgbouncers spec: + icons: + - src: https://cdn.appscode.com/k8s/icons/kubedb.com/pgbouncers.svg + type: image/svg+xml + - src: https://cdn.appscode.com/k8s/icons/kubedb.com/pgbouncers.png + type: image/png resource: group: kubedb.com kind: PgBouncer name: pgbouncers scope: Namespaced version: v1 + ui: + editor: + name: kubedbcom-pgbouncer-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.4.21 + enforceQuota: false + options: + name: kubedbcom-pgbouncer-editor-options + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.4.20 + variants: + - name: default + selector: + matchLabels: + charts.x-helm.dev/is-default-preset: "true" diff --git a/vendor/kmodules.xyz/resource-metadata/hub/resourceeditors/kubedb.com/v1/postgreses.yaml b/vendor/kmodules.xyz/resource-metadata/hub/resourceeditors/kubedb.com/v1/postgreses.yaml index 6185d29418..ebbd938e64 100644 --- a/vendor/kmodules.xyz/resource-metadata/hub/resourceeditors/kubedb.com/v1/postgreses.yaml +++ b/vendor/kmodules.xyz/resource-metadata/hub/resourceeditors/kubedb.com/v1/postgreses.yaml @@ -9,9 +9,186 @@ metadata: k8s.io/version: v1 name: kubedb.com-v1-postgreses spec: + icons: + - src: https://cdn.appscode.com/k8s/icons/kubedb.com/postgreses.svg + type: image/svg+xml + - src: https://cdn.appscode.com/k8s/icons/kubedb.com/postgreses.png + type: image/png resource: group: kubedb.com kind: Postgres name: postgreses scope: Namespaced version: v1 + ui: + actions: + - items: + - editor: + name: kubedbcom-postgres-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.4.20 + enforceQuota: false + flow: standalone-edit + icons: + - src: https://cdn.appscode.com/k8s/icons/action-icons/backup.svg + type: image/svg+xml + name: Backup + operationId: edit-self-backupconfiguration + - editor: + name: stashappscodecom-restoresession-editor-options + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.4.20 + enforceQuota: false + flow: standalone-create + icons: + - src: https://cdn.appscode.com/k8s/icons/action-icons/restore.svg + type: image/svg+xml + name: Restore + operationId: create-restoresession + name: Backups + - items: + - editor: + name: opskubedbcom-postgresopsrequest-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.4.20 + enforceQuota: false + flow: standalone-create + icons: + - src: https://cdn.appscode.com/k8s/icons/action-icons/version.svg + type: image/svg+xml + name: Update Version + operationId: create-opsrequest-upgrade + - editor: + name: opskubedbcom-postgresopsrequest-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.4.20 + enforceQuota: false + flow: standalone-create + icons: + - src: https://cdn.appscode.com/k8s/icons/action-icons/restart.svg + type: image/svg+xml + name: Restart + operationId: create-opsrequest-restart + - editor: + name: opskubedbcom-postgresopsrequest-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.4.20 + enforceQuota: false + flow: standalone-create + icons: + - src: https://cdn.appscode.com/k8s/icons/action-icons/reconfigure.svg + type: image/svg+xml + name: Reconfigure + operationId: create-opsrequest-reconfigure + name: Operations + - items: + - disabledTemplate: | + {{ not (hasKey .spec "standbyMode") }} + editor: + name: opskubedbcom-postgresopsrequest-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.4.20 + enforceQuota: true + flow: standalone-create + icons: + - src: https://cdn.appscode.com/k8s/icons/action-icons/horizontal_scale.svg + type: image/svg+xml + name: Horizontal Scale + operationId: create-opsrequest-horizontalscaling + - editor: + name: opskubedbcom-postgresopsrequest-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.4.20 + enforceQuota: true + flow: standalone-create + icons: + - src: https://cdn.appscode.com/k8s/icons/action-icons/vertical_scale.svg + type: image/svg+xml + name: Vertical Scale + operationId: create-opsrequest-verticalscaling + - editor: + name: opskubedbcom-postgresopsrequest-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.4.20 + enforceQuota: true + flow: standalone-create + icons: + - src: https://cdn.appscode.com/k8s/icons/action-icons/expand.svg + type: image/svg+xml + name: Expand Volume + operationId: create-opsrequest-volumeexpansion + name: Scaling + - items: + - editor: + name: opskubedbcom-postgresopsrequest-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.4.20 + enforceQuota: false + flow: standalone-create + icons: + - src: https://cdn.appscode.com/k8s/icons/action-icons/configure.svg + type: image/svg+xml + name: TLS Configure + operationId: create-opsrequest-reconfiguretls + - editor: + name: kubedbcom-postgres-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.4.20 + enforceQuota: false + flow: standalone-edit + icons: + - src: https://cdn.appscode.com/k8s/icons/action-icons/monitor.svg + type: image/svg+xml + name: Monitoring + operationId: edit-self-monitoring + name: Security & Monitoring + editor: + name: kubedbcom-postgres-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.4.21 + enforceQuota: true + options: + name: kubedbcom-postgres-editor-options + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.4.20 + variants: + - name: default + selector: + matchLabels: + charts.x-helm.dev/is-default-preset: "true" diff --git a/vendor/kmodules.xyz/resource-metadata/hub/resourceeditors/kubedb.com/v1/proxysqls.yaml b/vendor/kmodules.xyz/resource-metadata/hub/resourceeditors/kubedb.com/v1/proxysqls.yaml index a8c5099a65..3a7a7b9b53 100644 --- a/vendor/kmodules.xyz/resource-metadata/hub/resourceeditors/kubedb.com/v1/proxysqls.yaml +++ b/vendor/kmodules.xyz/resource-metadata/hub/resourceeditors/kubedb.com/v1/proxysqls.yaml @@ -9,9 +9,140 @@ metadata: k8s.io/version: v1 name: kubedb.com-v1-proxysqls spec: + icons: + - src: https://cdn.appscode.com/k8s/icons/kubedb.com/proxysqls.svg + type: image/svg+xml + - src: https://cdn.appscode.com/k8s/icons/kubedb.com/proxysqls.png + type: image/png resource: group: kubedb.com kind: ProxySQL name: proxysqls scope: Namespaced version: v1 + ui: + actions: + - items: + - editor: + name: opskubedbcom-proxysqlopsrequest-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.4.20 + enforceQuota: false + flow: standalone-create + icons: + - src: https://cdn.appscode.com/k8s/icons/action-icons/version.svg + type: image/svg+xml + name: Update Version + operationId: create-opsrequest-upgrade + - editor: + name: opskubedbcom-proxysqlopsrequest-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.4.20 + enforceQuota: false + flow: standalone-create + icons: + - src: https://cdn.appscode.com/k8s/icons/action-icons/restart.svg + type: image/svg+xml + name: Restart + operationId: create-opsrequest-restart + - editor: + name: opskubedbcom-proxysqlopsrequest-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.4.20 + enforceQuota: false + flow: standalone-create + icons: + - src: https://cdn.appscode.com/k8s/icons/action-icons/reconfigure.svg + type: image/svg+xml + name: Reconfigure + operationId: create-opsrequest-reconfigure + name: Operations + - items: + - editor: + name: opskubedbcom-proxysqlopsrequest-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.4.20 + enforceQuota: false + flow: standalone-create + icons: + - src: https://cdn.appscode.com/k8s/icons/action-icons/horizontal_scale.svg + type: image/svg+xml + name: Horizontal Scale + operationId: create-opsrequest-horizontalscaling + - editor: + name: opskubedbcom-proxysqlopsrequest-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.4.20 + enforceQuota: false + flow: standalone-create + icons: + - src: https://cdn.appscode.com/k8s/icons/action-icons/vertical_scale.svg + type: image/svg+xml + name: Vertical Scale + operationId: create-opsrequest-verticalscaling + name: Scaling + - items: + - editor: + name: opskubedbcom-proxysqlopsrequest-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.4.20 + enforceQuota: false + flow: standalone-create + icons: + - src: https://cdn.appscode.com/k8s/icons/action-icons/configure.svg + type: image/svg+xml + name: TLS Configure + operationId: create-opsrequest-reconfiguretls + - editor: + name: kubedbcom-proxysql-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.4.20 + enforceQuota: false + flow: standalone-edit + icons: + - src: https://cdn.appscode.com/k8s/icons/action-icons/monitor.svg + type: image/svg+xml + name: Monitoring + operationId: edit-self-monitoring + name: Security & Monitoring + editor: + name: kubedbcom-proxysql-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.4.21 + enforceQuota: false + options: + name: kubedbcom-proxysql-editor-options + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.4.20 + variants: + - name: default + selector: + matchLabels: + charts.x-helm.dev/is-default-preset: "true" diff --git a/vendor/kmodules.xyz/resource-metadata/hub/resourceeditors/kubedb.com/v1/redises.yaml b/vendor/kmodules.xyz/resource-metadata/hub/resourceeditors/kubedb.com/v1/redises.yaml index 1d62040a8c..be7798c7eb 100644 --- a/vendor/kmodules.xyz/resource-metadata/hub/resourceeditors/kubedb.com/v1/redises.yaml +++ b/vendor/kmodules.xyz/resource-metadata/hub/resourceeditors/kubedb.com/v1/redises.yaml @@ -9,9 +9,186 @@ metadata: k8s.io/version: v1 name: kubedb.com-v1-redises spec: + icons: + - src: https://cdn.appscode.com/k8s/icons/kubedb.com/redises.svg + type: image/svg+xml + - src: https://cdn.appscode.com/k8s/icons/kubedb.com/redises.png + type: image/png resource: group: kubedb.com kind: Redis name: redises scope: Namespaced version: v1 + ui: + actions: + - items: + - editor: + name: kubedbcom-redis-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.4.20 + enforceQuota: false + flow: standalone-edit + icons: + - src: https://cdn.appscode.com/k8s/icons/action-icons/backup.svg + type: image/svg+xml + name: Backup + operationId: edit-self-backupconfiguration + - editor: + name: stashappscodecom-restoresession-editor-options + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.4.20 + enforceQuota: false + flow: standalone-create + icons: + - src: https://cdn.appscode.com/k8s/icons/action-icons/restore.svg + type: image/svg+xml + name: Restore + operationId: create-restoresession + name: Backups + - items: + - editor: + name: opskubedbcom-redisopsrequest-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.4.20 + enforceQuota: false + flow: standalone-create + icons: + - src: https://cdn.appscode.com/k8s/icons/action-icons/version.svg + type: image/svg+xml + name: Update Version + operationId: create-opsrequest-upgrade + - editor: + name: opskubedbcom-redisopsrequest-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.4.20 + enforceQuota: false + flow: standalone-create + icons: + - src: https://cdn.appscode.com/k8s/icons/action-icons/restart.svg + type: image/svg+xml + name: Restart + operationId: create-opsrequest-restart + - editor: + name: opskubedbcom-redisopsrequest-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.4.20 + enforceQuota: false + flow: standalone-create + icons: + - src: https://cdn.appscode.com/k8s/icons/action-icons/reconfigure.svg + type: image/svg+xml + name: Reconfigure + operationId: create-opsrequest-reconfigure + name: Operations + - items: + - disabledTemplate: | + {{ or (not (hasKey .spec "mode")) (eq .spec.mode "Standalone") }} + editor: + name: opskubedbcom-redisopsrequest-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.4.20 + enforceQuota: true + flow: standalone-create + icons: + - src: https://cdn.appscode.com/k8s/icons/action-icons/horizontal_scale.svg + type: image/svg+xml + name: Horizontal Scale + operationId: create-opsrequest-horizontalscaling + - editor: + name: opskubedbcom-redisopsrequest-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.4.20 + enforceQuota: true + flow: standalone-create + icons: + - src: https://cdn.appscode.com/k8s/icons/action-icons/vertical_scale.svg + type: image/svg+xml + name: Vertical Scale + operationId: create-opsrequest-verticalscaling + - editor: + name: opskubedbcom-redisopsrequest-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.4.20 + enforceQuota: true + flow: standalone-create + icons: + - src: https://cdn.appscode.com/k8s/icons/action-icons/expand.svg + type: image/svg+xml + name: Expand Volume + operationId: create-opsrequest-volumeexpansion + name: Scaling + - items: + - editor: + name: opskubedbcom-redisopsrequest-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.4.20 + enforceQuota: false + flow: standalone-create + icons: + - src: https://cdn.appscode.com/k8s/icons/action-icons/configure.svg + type: image/svg+xml + name: TLS Configure + operationId: create-opsrequest-reconfiguretls + - editor: + name: kubedbcom-redis-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.4.20 + enforceQuota: false + flow: standalone-edit + icons: + - src: https://cdn.appscode.com/k8s/icons/action-icons/monitor.svg + type: image/svg+xml + name: Monitoring + operationId: edit-self-monitoring + name: Security & Monitoring + editor: + name: kubedbcom-redis-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.4.21 + enforceQuota: true + options: + name: kubedbcom-redis-editor-options + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.4.20 + variants: + - name: default + selector: + matchLabels: + charts.x-helm.dev/is-default-preset: "true" diff --git a/vendor/kmodules.xyz/resource-metadata/hub/resourceeditors/kubedb.com/v1/redissentinels.yaml b/vendor/kmodules.xyz/resource-metadata/hub/resourceeditors/kubedb.com/v1/redissentinels.yaml index 4ab4be9050..ba91a630ae 100644 --- a/vendor/kmodules.xyz/resource-metadata/hub/resourceeditors/kubedb.com/v1/redissentinels.yaml +++ b/vendor/kmodules.xyz/resource-metadata/hub/resourceeditors/kubedb.com/v1/redissentinels.yaml @@ -9,9 +9,28 @@ metadata: k8s.io/version: v1 name: kubedb.com-v1-redissentinels spec: + icons: + - src: https://cdn.appscode.com/k8s/icons/kubedb.com/redissentinels.svg + type: image/svg+xml + - src: https://cdn.appscode.com/k8s/icons/kubedb.com/redissentinels.png + type: image/png resource: group: kubedb.com kind: RedisSentinel name: redissentinels scope: Namespaced version: v1 + ui: + editor: + name: kubedbcom-redissentinel-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.4.21 + enforceQuota: false + variants: + - name: default + selector: + matchLabels: + charts.x-helm.dev/is-default-preset: "true" diff --git a/vendor/kmodules.xyz/resource-metadata/hub/resourceeditors/ops.kubedb.com/v1alpha1/solropsrequests.yaml b/vendor/kmodules.xyz/resource-metadata/hub/resourceeditors/ops.kubedb.com/v1alpha1/solropsrequests.yaml new file mode 100644 index 0000000000..15c0bc5b2c --- /dev/null +++ b/vendor/kmodules.xyz/resource-metadata/hub/resourceeditors/ops.kubedb.com/v1alpha1/solropsrequests.yaml @@ -0,0 +1,17 @@ +apiVersion: ui.k8s.appscode.com/v1alpha1 +kind: ResourceEditor +metadata: + creationTimestamp: null + labels: + k8s.io/group: ops.kubedb.com + k8s.io/kind: SolrOpsRequest + k8s.io/resource: solropsrequests + k8s.io/version: v1alpha1 + name: ops.kubedb.com-v1alpha1-solropsrequests +spec: + resource: + group: ops.kubedb.com + kind: SolrOpsRequest + name: solropsrequests + scope: Namespaced + version: v1alpha1 diff --git a/vendor/kmodules.xyz/resource-metadata/hub/resourcetabledefinitions/apps.k8s.appscode.com/v1/petsets.yaml b/vendor/kmodules.xyz/resource-metadata/hub/resourcetabledefinitions/apps.k8s.appscode.com/v1/petsets.yaml new file mode 100644 index 0000000000..6a51d9484e --- /dev/null +++ b/vendor/kmodules.xyz/resource-metadata/hub/resourcetabledefinitions/apps.k8s.appscode.com/v1/petsets.yaml @@ -0,0 +1,95 @@ +apiVersion: meta.k8s.appscode.com/v1alpha1 +kind: ResourceTableDefinition +metadata: + creationTimestamp: null + labels: + k8s.io/group: apps.k8s.appscode.com + k8s.io/kind: PetSet + k8s.io/resource: petsets + k8s.io/version: v1 + name: apps.k8s.appscode.com-v1-petsets +spec: + columns: + - name: Name + pathTemplate: '{{ .metadata.name }}' + priority: 3 + type: string + - name: Namespace + pathTemplate: '{{ .metadata.namespace }}' + priority: 3 + type: string + - name: Labels + pathTemplate: '{{ .metadata.labels | toRawJson }}' + priority: 3 + type: object + - name: Annotations + pathTemplate: '{{ .metadata.annotations | toRawJson }}' + priority: 1 + type: object + - name: Selector + pathTemplate: '{{ .spec.selector | k8s_fmt_selector }}' + priority: 1 + type: string + - name: Revision History Limit + pathTemplate: '{{ .spec.revisionHistoryLimit }}' + priority: 1 + type: integer + - name: Update Strategy + pathTemplate: '{{ .spec.updateStrategy.type }}' + priority: 1 + type: string + - name: Rolling Update Strategy + pathTemplate: '{{ .spec.updateStrategy.rollingUpdate }}' + priority: 1 + type: object + - name: Pod Management Policy + pathTemplate: '{{ .spec.podManagementPolicy }}' + priority: 1 + type: string + - name: Desired Replicas + pathTemplate: '{{ .spec.replicas }}' + priority: 1 + type: integer + - name: Pod Status + pathTemplate: '{ "Total": "{{jp "{.status.replicas}" . }}", "Current Replicas": "{{ jp "{.status.currentReplicas}" . }}", "Updated": "{{ jp "{.status.updatedReplicas}" . }}" }' + priority: 1 + type: object + - name: Pods + pathTemplate: '{{ .status.readyReplicas }}/{{ .spec.replicas }}' + priority: 2 + type: string + - name: Images + pathTemplate: '{{ .spec.template.spec.containers | k8s_container_images }}' + priority: 2 + type: string + - name: Service Name + pathTemplate: '{{ .spec.serviceName }}' + priority: 1 + type: string + - name: Security Context + pathTemplate: '{ "runAsUser": "{{ jp "{.spec.template.spec.securityContext.runAsUser}" . }}", "runAsGroup": "{{ jp "{.spec.template.spec.securityContext.runAsGroup}" . }}","fsGroup": "{{ jp "{.spec.template.spec.securityContext.fsGroup}" . }}" }' + priority: 1 + type: object + - name: ServiceAccount Name + pathTemplate: '{{ .spec.template.spec.serviceAccountName }}' + priority: 1 + type: string + - name: Volumes + pathTemplate: '{{ .spec.template.spec.volumes | k8s_volumes }}' + priority: 1 + type: object + - name: Age + pathTemplate: '{{ .metadata.creationTimestamp }}' + priority: 3 + sort: + enable: true + template: '{{ .metadata.creationTimestamp | toDate "2006-01-02T15:04:05Z07:00" | unixEpoch }}' + type: integer + type: date + defaultView: true + resource: + group: apps.k8s.appscode.com + kind: PetSet + name: petsets + scope: Namespaced + version: v1 diff --git a/vendor/kmodules.xyz/resource-metadata/hub/resourcetabledefinitions/apps.k8s.appscode.com/v1/placementpolicies.yaml b/vendor/kmodules.xyz/resource-metadata/hub/resourcetabledefinitions/apps.k8s.appscode.com/v1/placementpolicies.yaml new file mode 100644 index 0000000000..51478273ed --- /dev/null +++ b/vendor/kmodules.xyz/resource-metadata/hub/resourcetabledefinitions/apps.k8s.appscode.com/v1/placementpolicies.yaml @@ -0,0 +1,18 @@ +apiVersion: meta.k8s.appscode.com/v1alpha1 +kind: ResourceTableDefinition +metadata: + creationTimestamp: null + labels: + k8s.io/group: apps.k8s.appscode.com + k8s.io/kind: PlacementPolicy + k8s.io/resource: placementpolicies + k8s.io/version: v1 + name: apps.k8s.appscode.com-v1-placementpolicies +spec: + defaultView: true + resource: + group: apps.k8s.appscode.com + kind: PlacementPolicy + name: placementpolicies + scope: Cluster + version: v1 diff --git a/vendor/kmodules.xyz/resource-metadata/hub/resourcetabledefinitions/kubedb.com/v1/elasticsearches.yaml b/vendor/kmodules.xyz/resource-metadata/hub/resourcetabledefinitions/kubedb.com/v1/elasticsearches.yaml index 7195ad40be..d0f187b50e 100644 --- a/vendor/kmodules.xyz/resource-metadata/hub/resourcetabledefinitions/kubedb.com/v1/elasticsearches.yaml +++ b/vendor/kmodules.xyz/resource-metadata/hub/resourcetabledefinitions/kubedb.com/v1/elasticsearches.yaml @@ -9,6 +9,79 @@ metadata: k8s.io/version: v1 name: kubedb.com-v1-elasticsearches spec: + columns: + - name: Name + pathTemplate: '{{ .metadata.name }}' + priority: 3 + type: string + - name: Namespace + pathTemplate: '{{ .metadata.namespace }}' + priority: 3 + type: string + - name: Labels + pathTemplate: '{{ .metadata.labels | toRawJson }}' + priority: 3 + type: object + - name: Annotations + pathTemplate: '{{ .metadata.annotations | toRawJson }}' + priority: 1 + type: object + - name: Version + pathTemplate: '{{ .spec.version }}' + priority: 3 + type: string + - name: Replicas + pathTemplate: '{{ k8s_resource_replicas_by_roles . | toRawJson }}' + priority: 3 + type: object + - color: + template: | + {{ $status := .status.phase }} + {{ $color := "gray" }} + {{ if list "Provisioning" "DataRestoring" | has $status }} + {{ $color = "info" }} + {{ else if list "Ready" | has $status }} + {{ $color = "success" }} + {{ else if list "Critical" | has $status }} + {{ $color = "warning" }} + {{ else if list "NotReady" | has $status }} + {{ $color = "danger" }} + {{ else if list "Halted" | has $status }} + {{ $color = "gray" }} + {{ end }} + {{- printf "%s" $color -}} + name: Phase + pathTemplate: '{{ .status.phase }}' + priority: 3 + type: string + - name: Total Resources + pathTemplate: '{{ k8s_total_resource_limits . | toRawJson }}' + priority: 3 + type: object + - name: HTTPS + pathTemplate: '{{ .spec.enableSSL }}' + priority: 3 + type: string + - name: Auth Secret + pathTemplate: '{{ .spec.authSecret.name }}' + priority: 1 + type: string + - name: Termination Policy + pathTemplate: '{{ .spec.terminationPolicy }}' + priority: 3 + type: string + - name: Halted + pathTemplate: '{{ .spec.halted }}' + priority: 1 + type: string + - name: Age + pathTemplate: '{{ .metadata.creationTimestamp }}' + priority: 3 + sort: + enable: true + template: '{{ .metadata.creationTimestamp | toDate "2006-01-02T15:04:05Z07:00" | unixEpoch }}' + type: integer + type: date defaultView: true resource: group: kubedb.com diff --git a/vendor/kmodules.xyz/resource-metadata/hub/resourcetabledefinitions/kubedb.com/v1/kafkas.yaml b/vendor/kmodules.xyz/resource-metadata/hub/resourcetabledefinitions/kubedb.com/v1/kafkas.yaml index 663aacb37b..02b701b983 100644 --- a/vendor/kmodules.xyz/resource-metadata/hub/resourcetabledefinitions/kubedb.com/v1/kafkas.yaml +++ b/vendor/kmodules.xyz/resource-metadata/hub/resourcetabledefinitions/kubedb.com/v1/kafkas.yaml @@ -9,6 +9,75 @@ metadata: k8s.io/version: v1 name: kubedb.com-v1-kafkas spec: + columns: + - name: Name + pathTemplate: '{{ .metadata.name }}' + priority: 3 + type: string + - name: Namespace + pathTemplate: '{{ .metadata.namespace }}' + priority: 3 + type: string + - name: Labels + pathTemplate: '{{ .metadata.labels | toRawJson }}' + priority: 3 + type: object + - name: Annotations + pathTemplate: '{{ .metadata.annotations | toRawJson }}' + priority: 1 + type: object + - name: Version + pathTemplate: '{{ .spec.version }}' + priority: 3 + type: string + - name: Replicas + pathTemplate: '{{ k8s_resource_replicas_by_roles . | toRawJson }}' + priority: 3 + type: object + - color: + template: | + {{ $status := .status.phase }} + {{ $color := "gray" }} + {{ if list "Provisioning" "DataRestoring" | has $status }} + {{ $color = "info" }} + {{ else if list "Ready" | has $status }} + {{ $color = "success" }} + {{ else if list "Critical" | has $status }} + {{ $color = "warning" }} + {{ else if list "NotReady" | has $status }} + {{ $color = "danger" }} + {{ else if list "Halted" | has $status }} + {{ $color = "gray" }} + {{ end }} + {{- printf "%s" $color -}} + name: Phase + pathTemplate: '{{ .status.phase }}' + priority: 3 + type: string + - name: Total Resources + pathTemplate: '{{ k8s_total_resource_limits . | toRawJson }}' + priority: 3 + type: object + - name: HTTPS + pathTemplate: '{{ .spec.enableSSL }}' + priority: 3 + type: string + - name: Auth Secret + pathTemplate: '{{ .spec.authSecret.name }}' + priority: 1 + type: string + - name: Termination Policy + pathTemplate: '{{ .spec.terminationPolicy }}' + priority: 3 + type: string + - name: Age + pathTemplate: '{{ .metadata.creationTimestamp }}' + priority: 3 + sort: + enable: true + template: '{{ .metadata.creationTimestamp | toDate "2006-01-02T15:04:05Z07:00" | unixEpoch }}' + type: integer + type: date defaultView: true resource: group: kubedb.com diff --git a/vendor/kmodules.xyz/resource-metadata/hub/resourcetabledefinitions/kubedb.com/v1/mariadbs.yaml b/vendor/kmodules.xyz/resource-metadata/hub/resourcetabledefinitions/kubedb.com/v1/mariadbs.yaml index 9eaf3221a9..2369776ac1 100644 --- a/vendor/kmodules.xyz/resource-metadata/hub/resourcetabledefinitions/kubedb.com/v1/mariadbs.yaml +++ b/vendor/kmodules.xyz/resource-metadata/hub/resourcetabledefinitions/kubedb.com/v1/mariadbs.yaml @@ -9,6 +9,83 @@ metadata: k8s.io/version: v1 name: kubedb.com-v1-mariadbs spec: + columns: + - name: Name + pathTemplate: '{{ .metadata.name }}' + priority: 3 + type: string + - name: Namespace + pathTemplate: '{{ .metadata.namespace }}' + priority: 3 + type: string + - name: Labels + pathTemplate: '{{ .metadata.labels | toRawJson }}' + priority: 3 + type: object + - name: Annotations + pathTemplate: '{{ .metadata.annotations | toRawJson }}' + priority: 1 + type: object + - name: Version + pathTemplate: '{{ .spec.version }}' + priority: 3 + type: string + - name: Mode + pathTemplate: '{{ k8s_resource_mode . }}' + priority: 3 + type: string + - name: Replicas + pathTemplate: '{{ k8s_resource_replicas_by_roles . | toRawJson }}' + priority: 3 + type: string + - color: + template: | + {{ $status := .status.phase }} + {{ $color := "gray" }} + {{ if list "Provisioning" "DataRestoring" | has $status }} + {{ $color = "info" }} + {{ else if list "Ready" | has $status }} + {{ $color = "success" }} + {{ else if list "Critical" | has $status }} + {{ $color = "warning" }} + {{ else if list "NotReady" | has $status }} + {{ $color = "danger" }} + {{ else if list "Halted" | has $status }} + {{ $color = "gray" }} + {{ end }} + {{- printf "%s" $color -}} + name: Phase + pathTemplate: '{{ .status.phase }}' + priority: 3 + type: string + - name: Total Resources + pathTemplate: '{{ k8s_total_resource_limits . | toRawJson }}' + priority: 3 + type: object + - name: Auth Secret + pathTemplate: '{{ .spec.authSecret.name }}' + priority: 1 + type: string + - name: SSL Required + pathTemplate: '{{ .spec.requireSSL }}' + priority: 3 + type: string + - name: Termination Policy + pathTemplate: '{{ .spec.terminationPolicy }}' + priority: 3 + type: string + - name: Halted + pathTemplate: '{{ .spec.halted }}' + priority: 1 + type: string + - name: Age + pathTemplate: '{{ .metadata.creationTimestamp }}' + priority: 3 + sort: + enable: true + template: '{{ .metadata.creationTimestamp | toDate "2006-01-02T15:04:05Z07:00" | unixEpoch }}' + type: integer + type: date defaultView: true resource: group: kubedb.com diff --git a/vendor/kmodules.xyz/resource-metadata/hub/resourcetabledefinitions/kubedb.com/v1/memcacheds.yaml b/vendor/kmodules.xyz/resource-metadata/hub/resourcetabledefinitions/kubedb.com/v1/memcacheds.yaml index 41eac5f6b6..747237033f 100644 --- a/vendor/kmodules.xyz/resource-metadata/hub/resourcetabledefinitions/kubedb.com/v1/memcacheds.yaml +++ b/vendor/kmodules.xyz/resource-metadata/hub/resourcetabledefinitions/kubedb.com/v1/memcacheds.yaml @@ -9,6 +9,79 @@ metadata: k8s.io/version: v1 name: kubedb.com-v1-memcacheds spec: + columns: + - name: Name + pathTemplate: '{{ .metadata.name }}' + priority: 3 + type: string + - name: Namespace + pathTemplate: '{{ .metadata.namespace }}' + priority: 3 + type: string + - name: Labels + pathTemplate: '{{ .metadata.labels | toRawJson }}' + priority: 3 + type: object + - name: Annotations + pathTemplate: '{{ .metadata.annotations | toRawJson }}' + priority: 1 + type: object + - name: Version + pathTemplate: '{{ .spec.version }}' + priority: 3 + type: string + - name: Mode + pathTemplate: '{{ k8s_resource_mode . }}' + priority: 3 + type: string + - name: Replicas + pathTemplate: '{{ k8s_resource_replicas_by_roles . | toRawJson }}' + priority: 3 + type: string + - color: + template: | + {{ $status := .status.phase }} + {{ $color := "gray" }} + {{ if list "Provisioning" "DataRestoring" | has $status }} + {{ $color = "info" }} + {{ else if list "Ready" | has $status }} + {{ $color = "success" }} + {{ else if list "Critical" | has $status }} + {{ $color = "warning" }} + {{ else if list "NotReady" | has $status }} + {{ $color = "danger" }} + {{ else if list "Halted" | has $status }} + {{ $color = "gray" }} + {{ end }} + {{- printf "%s" $color -}} + name: Phase + pathTemplate: '{{ .status.phase }}' + priority: 3 + type: string + - name: Total Resources + pathTemplate: '{{ k8s_total_resource_limits . | toRawJson }}' + priority: 3 + type: object + - name: Auth Secret + pathTemplate: '{{ .spec.authSecret.name }}' + priority: 1 + type: string + - name: Termination Policy + pathTemplate: '{{ .spec.terminationPolicy }}' + priority: 3 + type: string + - name: Halted + pathTemplate: '{{ .spec.halted }}' + priority: 1 + type: string + - name: Age + pathTemplate: '{{ .metadata.creationTimestamp }}' + priority: 3 + sort: + enable: true + template: '{{ .metadata.creationTimestamp | toDate "2006-01-02T15:04:05Z07:00" | unixEpoch }}' + type: integer + type: date defaultView: true resource: group: kubedb.com diff --git a/vendor/kmodules.xyz/resource-metadata/hub/resourcetabledefinitions/kubedb.com/v1/mongodbs.yaml b/vendor/kmodules.xyz/resource-metadata/hub/resourcetabledefinitions/kubedb.com/v1/mongodbs.yaml index a3e1cf0f18..eb909c07d3 100644 --- a/vendor/kmodules.xyz/resource-metadata/hub/resourcetabledefinitions/kubedb.com/v1/mongodbs.yaml +++ b/vendor/kmodules.xyz/resource-metadata/hub/resourcetabledefinitions/kubedb.com/v1/mongodbs.yaml @@ -9,6 +9,91 @@ metadata: k8s.io/version: v1 name: kubedb.com-v1-mongodbs spec: + columns: + - name: Name + pathTemplate: '{{ .metadata.name }}' + priority: 3 + type: string + - name: Namespace + pathTemplate: '{{ .metadata.namespace }}' + priority: 3 + type: string + - name: Labels + pathTemplate: '{{ .metadata.labels | toRawJson }}' + priority: 3 + type: object + - name: Annotations + pathTemplate: '{{ .metadata.annotations | toRawJson }}' + priority: 1 + type: object + - name: Version + pathTemplate: '{{ .spec.version }}' + priority: 3 + type: string + - name: Mode + pathTemplate: '{{ k8s_resource_mode . }}' + priority: 3 + type: string + - name: Replicas + pathTemplate: '{{ k8s_resource_replicas_by_roles . | toRawJson }}' + priority: 3 + type: string + - color: + template: | + {{ $status := .status.phase }} + {{ $color := "gray" }} + {{ if list "Provisioning" "DataRestoring" | has $status }} + {{ $color = "info" }} + {{ else if list "Ready" | has $status }} + {{ $color = "success" }} + {{ else if list "Critical" | has $status }} + {{ $color = "warning" }} + {{ else if list "NotReady" | has $status }} + {{ $color = "danger" }} + {{ else if list "Halted" | has $status }} + {{ $color = "gray" }} + {{ end }} + {{- printf "%s" $color -}} + name: Phase + pathTemplate: '{{ .status.phase }}' + priority: 3 + type: string + - name: Total Resources + pathTemplate: '{{ k8s_total_resource_limits . | toRawJson }}' + priority: 3 + type: object + - name: Auth Secret + pathTemplate: '{{ .spec.authSecret.name }}' + priority: 1 + type: string + - name: SSL Mode + pathTemplate: '{{ .spec.sslMode }}' + priority: 3 + type: string + - name: Cluster Auth Mode + pathTemplate: '{{ .spec.clusterAuthMode }}' + priority: 1 + type: string + - name: Storage Engine + pathTemplate: '{{ .spec.storageEngine }}' + priority: 1 + type: string + - name: Termination Policy + pathTemplate: '{{ .spec.terminationPolicy }}' + priority: 3 + type: string + - name: Halted + pathTemplate: '{{ .spec.halted }}' + priority: 1 + type: string + - name: Age + pathTemplate: '{{ .metadata.creationTimestamp }}' + priority: 3 + sort: + enable: true + template: '{{ .metadata.creationTimestamp | toDate "2006-01-02T15:04:05Z07:00" | unixEpoch }}' + type: integer + type: date defaultView: true resource: group: kubedb.com diff --git a/vendor/kmodules.xyz/resource-metadata/hub/resourcetabledefinitions/kubedb.com/v1/mysqls.yaml b/vendor/kmodules.xyz/resource-metadata/hub/resourcetabledefinitions/kubedb.com/v1/mysqls.yaml index 999340feff..2874284e53 100644 --- a/vendor/kmodules.xyz/resource-metadata/hub/resourcetabledefinitions/kubedb.com/v1/mysqls.yaml +++ b/vendor/kmodules.xyz/resource-metadata/hub/resourcetabledefinitions/kubedb.com/v1/mysqls.yaml @@ -9,6 +9,95 @@ metadata: k8s.io/version: v1 name: kubedb.com-v1-mysqls spec: + columns: + - name: Name + pathTemplate: '{{ .metadata.name }}' + priority: 3 + type: string + - name: Namespace + pathTemplate: '{{ .metadata.namespace }}' + priority: 3 + type: string + - name: Labels + pathTemplate: '{{ .metadata.labels | toRawJson }}' + priority: 3 + type: object + - name: Annotations + pathTemplate: '{{ .metadata.annotations | toRawJson }}' + priority: 1 + type: object + - name: Version + pathTemplate: '{{ .spec.version }}' + priority: 3 + type: string + - name: Mode + pathTemplate: '{{ k8s_resource_mode . }}' + priority: 3 + type: string + - name: Replicas + pathTemplate: '{{ k8s_resource_replicas_by_roles . | toRawJson }}' + priority: 3 + type: string + - color: + template: | + {{ $status := .status.phase }} + {{ $color := "gray" }} + {{ if list "Provisioning" "DataRestoring" | has $status }} + {{ $color = "info" }} + {{ else if list "Ready" | has $status }} + {{ $color = "success" }} + {{ else if list "Critical" | has $status }} + {{ $color = "warning" }} + {{ else if list "NotReady" | has $status }} + {{ $color = "danger" }} + {{ else if list "Halted" | has $status }} + {{ $color = "gray" }} + {{ end }} + {{- printf "%s" $color -}} + name: Phase + pathTemplate: '{{ .status.phase }}' + priority: 3 + type: string + - name: Total Resources + pathTemplate: '{{ k8s_total_resource_limits . | toRawJson }}' + priority: 3 + type: object + - name: Auth Secret + pathTemplate: '{{ .spec.authSecret.name }}' + priority: 1 + type: string + - name: SSL Required + pathTemplate: '{{ .spec.requireSSL }}' + priority: 3 + type: string + - name: Cluster Auth Mode + pathTemplate: '{{ .spec.clusterAuthMode }}' + priority: 1 + type: string + - name: Storage Engine + pathTemplate: '{{ .spec.storageEngine }}' + priority: 1 + type: string + - name: Address Type + pathTemplate: '{{ .spec.useAddressType }}' + priority: 1 + type: string + - name: Termination Policy + pathTemplate: '{{ .spec.terminationPolicy }}' + priority: 3 + type: string + - name: Halted + pathTemplate: '{{ .spec.halted }}' + priority: 1 + type: string + - name: Age + pathTemplate: '{{ .metadata.creationTimestamp }}' + priority: 3 + sort: + enable: true + template: '{{ .metadata.creationTimestamp | toDate "2006-01-02T15:04:05Z07:00" | unixEpoch }}' + type: integer + type: date defaultView: true resource: group: kubedb.com diff --git a/vendor/kmodules.xyz/resource-metadata/hub/resourcetabledefinitions/kubedb.com/v1/perconaxtradbs.yaml b/vendor/kmodules.xyz/resource-metadata/hub/resourcetabledefinitions/kubedb.com/v1/perconaxtradbs.yaml index fd039b51cc..09f9c836ee 100644 --- a/vendor/kmodules.xyz/resource-metadata/hub/resourcetabledefinitions/kubedb.com/v1/perconaxtradbs.yaml +++ b/vendor/kmodules.xyz/resource-metadata/hub/resourcetabledefinitions/kubedb.com/v1/perconaxtradbs.yaml @@ -9,6 +9,79 @@ metadata: k8s.io/version: v1 name: kubedb.com-v1-perconaxtradbs spec: + columns: + - name: Name + pathTemplate: '{{ .metadata.name }}' + priority: 3 + type: string + - name: Namespace + pathTemplate: '{{ .metadata.namespace }}' + priority: 3 + type: string + - name: Labels + pathTemplate: '{{ .metadata.labels | toRawJson }}' + priority: 3 + type: object + - name: Annotations + pathTemplate: '{{ .metadata.annotations | toRawJson }}' + priority: 1 + type: object + - name: Version + pathTemplate: '{{ .spec.version }}' + priority: 3 + type: string + - name: Mode + pathTemplate: '{{ k8s_resource_mode . }}' + priority: 3 + type: string + - name: Replicas + pathTemplate: '{{ k8s_resource_replicas_by_roles . | toRawJson }}' + priority: 3 + type: string + - color: + template: | + {{ $status := .status.phase }} + {{ $color := "gray" }} + {{ if list "Provisioning" "DataRestoring" | has $status }} + {{ $color = "info" }} + {{ else if list "Ready" | has $status }} + {{ $color = "success" }} + {{ else if list "Critical" | has $status }} + {{ $color = "warning" }} + {{ else if list "NotReady" | has $status }} + {{ $color = "danger" }} + {{ else if list "Halted" | has $status }} + {{ $color = "gray" }} + {{ end }} + {{- printf "%s" $color -}} + name: Phase + pathTemplate: '{{ .status.phase }}' + priority: 3 + type: string + - name: Total Resources + pathTemplate: '{{ k8s_total_resource_limits . | toRawJson }}' + priority: 3 + type: object + - name: Auth Secret + pathTemplate: '{{ .spec.authSecret.name }}' + priority: 1 + type: string + - name: Termination Policy + pathTemplate: '{{ .spec.terminationPolicy }}' + priority: 3 + type: string + - name: Halted + pathTemplate: '{{ .spec.halted }}' + priority: 1 + type: string + - name: Age + pathTemplate: '{{ .metadata.creationTimestamp }}' + priority: 3 + sort: + enable: true + template: '{{ .metadata.creationTimestamp | toDate "2006-01-02T15:04:05Z07:00" | unixEpoch }}' + type: integer + type: date defaultView: true resource: group: kubedb.com diff --git a/vendor/kmodules.xyz/resource-metadata/hub/resourcetabledefinitions/kubedb.com/v1/pgbouncers.yaml b/vendor/kmodules.xyz/resource-metadata/hub/resourcetabledefinitions/kubedb.com/v1/pgbouncers.yaml index d007481f69..8a8580cb1a 100644 --- a/vendor/kmodules.xyz/resource-metadata/hub/resourcetabledefinitions/kubedb.com/v1/pgbouncers.yaml +++ b/vendor/kmodules.xyz/resource-metadata/hub/resourcetabledefinitions/kubedb.com/v1/pgbouncers.yaml @@ -9,6 +9,79 @@ metadata: k8s.io/version: v1 name: kubedb.com-v1-pgbouncers spec: + columns: + - name: Name + pathTemplate: '{{ .metadata.name }}' + priority: 3 + type: string + - name: Namespace + pathTemplate: '{{ .metadata.namespace }}' + priority: 3 + type: string + - name: Labels + pathTemplate: '{{ .metadata.labels | toRawJson }}' + priority: 3 + type: object + - name: Annotations + pathTemplate: '{{ .metadata.annotations | toRawJson }}' + priority: 1 + type: object + - name: Version + pathTemplate: '{{ .spec.version }}' + priority: 3 + type: string + - name: Mode + pathTemplate: '{{ k8s_resource_mode . }}' + priority: 3 + type: string + - name: Replicas + pathTemplate: '{{ k8s_resource_replicas_by_roles . | toRawJson }}' + priority: 3 + type: string + - color: + template: | + {{ $status := .status.phase }} + {{ $color := "gray" }} + {{ if list "Provisioning" "DataRestoring" | has $status }} + {{ $color = "info" }} + {{ else if list "Ready" | has $status }} + {{ $color = "success" }} + {{ else if list "Critical" | has $status }} + {{ $color = "warning" }} + {{ else if list "NotReady" | has $status }} + {{ $color = "danger" }} + {{ else if list "Halted" | has $status }} + {{ $color = "gray" }} + {{ end }} + {{- printf "%s" $color -}} + name: Phase + pathTemplate: '{{ .status.phase }}' + priority: 3 + type: string + - name: Total Resources + pathTemplate: '{{ k8s_total_resource_limits . | toRawJson }}' + priority: 3 + type: object + - name: Auth Secret + pathTemplate: '{{ .spec.authSecret.name }}' + priority: 1 + type: string + - name: Termination Policy + pathTemplate: '{{ .spec.terminationPolicy }}' + priority: 3 + type: string + - name: Halted + pathTemplate: '{{ .spec.halted }}' + priority: 1 + type: string + - name: Age + pathTemplate: '{{ .metadata.creationTimestamp }}' + priority: 3 + sort: + enable: true + template: '{{ .metadata.creationTimestamp | toDate "2006-01-02T15:04:05Z07:00" | unixEpoch }}' + type: integer + type: date defaultView: true resource: group: kubedb.com diff --git a/vendor/kmodules.xyz/resource-metadata/hub/resourcetabledefinitions/kubedb.com/v1/postgreses.yaml b/vendor/kmodules.xyz/resource-metadata/hub/resourcetabledefinitions/kubedb.com/v1/postgreses.yaml index 579c67502a..16717b9ab8 100644 --- a/vendor/kmodules.xyz/resource-metadata/hub/resourcetabledefinitions/kubedb.com/v1/postgreses.yaml +++ b/vendor/kmodules.xyz/resource-metadata/hub/resourcetabledefinitions/kubedb.com/v1/postgreses.yaml @@ -9,6 +9,83 @@ metadata: k8s.io/version: v1 name: kubedb.com-v1-postgreses spec: + columns: + - name: Name + pathTemplate: '{{ .metadata.name }}' + priority: 3 + type: string + - name: Namespace + pathTemplate: '{{ .metadata.namespace }}' + priority: 3 + type: string + - name: Labels + pathTemplate: '{{ .metadata.labels | toRawJson }}' + priority: 3 + type: object + - name: Annotations + pathTemplate: '{{ .metadata.annotations | toRawJson }}' + priority: 1 + type: object + - name: Version + pathTemplate: '{{ .spec.version }}' + priority: 3 + type: string + - name: Standby Mode + pathTemplate: '{{ k8s_resource_mode . }}' + priority: 3 + type: string + - name: Replicas + pathTemplate: '{{ k8s_resource_replicas_by_roles . | toRawJson }}' + priority: 3 + type: string + - color: + template: | + {{ $status := .status.phase }} + {{ $color := "gray" }} + {{ if list "Provisioning" "DataRestoring" | has $status }} + {{ $color = "info" }} + {{ else if list "Ready" | has $status }} + {{ $color = "success" }} + {{ else if list "Critical" | has $status }} + {{ $color = "warning" }} + {{ else if list "NotReady" | has $status }} + {{ $color = "danger" }} + {{ else if list "Halted" | has $status }} + {{ $color = "gray" }} + {{ end }} + {{- printf "%s" $color -}} + name: Phase + pathTemplate: '{{ .status.phase }}' + priority: 3 + type: string + - name: Total Resources + pathTemplate: '{{ k8s_total_resource_limits . | toRawJson }}' + priority: 3 + type: object + - name: Client Auth Mode + pathTemplate: '{{ .spec.clientAuthMode }}' + priority: 3 + type: string + - name: Auth Secret + pathTemplate: '{{ .spec.authSecret.name }}' + priority: 1 + type: string + - name: Termination Policy + pathTemplate: '{{ .spec.terminationPolicy }}' + priority: 3 + type: string + - name: Halted + pathTemplate: '{{ .spec.halted }}' + priority: 1 + type: string + - name: Age + pathTemplate: '{{ .metadata.creationTimestamp }}' + priority: 3 + sort: + enable: true + template: '{{ .metadata.creationTimestamp | toDate "2006-01-02T15:04:05Z07:00" | unixEpoch }}' + type: integer + type: date defaultView: true resource: group: kubedb.com diff --git a/vendor/kmodules.xyz/resource-metadata/hub/resourcetabledefinitions/kubedb.com/v1/proxysqls.yaml b/vendor/kmodules.xyz/resource-metadata/hub/resourcetabledefinitions/kubedb.com/v1/proxysqls.yaml index 8501de0c3b..e9af6cb332 100644 --- a/vendor/kmodules.xyz/resource-metadata/hub/resourcetabledefinitions/kubedb.com/v1/proxysqls.yaml +++ b/vendor/kmodules.xyz/resource-metadata/hub/resourcetabledefinitions/kubedb.com/v1/proxysqls.yaml @@ -9,6 +9,79 @@ metadata: k8s.io/version: v1 name: kubedb.com-v1-proxysqls spec: + columns: + - name: Name + pathTemplate: '{{ .metadata.name }}' + priority: 3 + type: string + - name: Namespace + pathTemplate: '{{ .metadata.namespace }}' + priority: 3 + type: string + - name: Labels + pathTemplate: '{{ .metadata.labels | toRawJson }}' + priority: 3 + type: object + - name: Annotations + pathTemplate: '{{ .metadata.annotations | toRawJson }}' + priority: 1 + type: object + - name: Version + pathTemplate: '{{ .spec.version }}' + priority: 3 + type: string + - name: Mode + pathTemplate: '{{ k8s_resource_mode . }}' + priority: 3 + type: string + - name: Replicas + pathTemplate: '{{ k8s_resource_replicas_by_roles . | toRawJson }}' + priority: 3 + type: string + - color: + template: | + {{ $status := .status.phase }} + {{ $color := "gray" }} + {{ if list "Provisioning" "DataRestoring" | has $status }} + {{ $color = "info" }} + {{ else if list "Ready" | has $status }} + {{ $color = "success" }} + {{ else if list "Critical" | has $status }} + {{ $color = "warning" }} + {{ else if list "NotReady" | has $status }} + {{ $color = "danger" }} + {{ else if list "Halted" | has $status }} + {{ $color = "gray" }} + {{ end }} + {{- printf "%s" $color -}} + name: Phase + pathTemplate: '{{ .status.phase }}' + priority: 3 + type: string + - name: Total Resources + pathTemplate: '{{ k8s_total_resource_limits . | toRawJson }}' + priority: 3 + type: object + - name: Auth Secret + pathTemplate: '{{ .spec.authSecret.name }}' + priority: 1 + type: string + - name: Termination Policy + pathTemplate: '{{ .spec.terminationPolicy }}' + priority: 3 + type: string + - name: Halted + pathTemplate: '{{ .spec.halted }}' + priority: 1 + type: string + - name: Age + pathTemplate: '{{ .metadata.creationTimestamp }}' + priority: 3 + sort: + enable: true + template: '{{ .metadata.creationTimestamp | toDate "2006-01-02T15:04:05Z07:00" | unixEpoch }}' + type: integer + type: date defaultView: true resource: group: kubedb.com diff --git a/vendor/kmodules.xyz/resource-metadata/hub/resourcetabledefinitions/kubedb.com/v1/redises.yaml b/vendor/kmodules.xyz/resource-metadata/hub/resourcetabledefinitions/kubedb.com/v1/redises.yaml index 76a3a5ba22..619d17d36f 100644 --- a/vendor/kmodules.xyz/resource-metadata/hub/resourcetabledefinitions/kubedb.com/v1/redises.yaml +++ b/vendor/kmodules.xyz/resource-metadata/hub/resourcetabledefinitions/kubedb.com/v1/redises.yaml @@ -9,6 +9,79 @@ metadata: k8s.io/version: v1 name: kubedb.com-v1-redises spec: + columns: + - name: Name + pathTemplate: '{{ .metadata.name }}' + priority: 3 + type: string + - name: Namespace + pathTemplate: '{{ .metadata.namespace }}' + priority: 3 + type: string + - name: Labels + pathTemplate: '{{ .metadata.labels | toRawJson }}' + priority: 3 + type: object + - name: Annotations + pathTemplate: '{{ .metadata.annotations | toRawJson }}' + priority: 1 + type: object + - name: Version + pathTemplate: '{{ .spec.version }}' + priority: 3 + type: string + - name: Mode + pathTemplate: '{{ k8s_resource_mode . }}' + priority: 3 + type: string + - name: Replicas + pathTemplate: '{{ k8s_resource_replicas_by_roles . | toRawJson }}' + priority: 3 + type: string + - color: + template: | + {{ $status := .status.phase }} + {{ $color := "gray" }} + {{ if list "Provisioning" "DataRestoring" | has $status }} + {{ $color = "info" }} + {{ else if list "Ready" | has $status }} + {{ $color = "success" }} + {{ else if list "Critical" | has $status }} + {{ $color = "warning" }} + {{ else if list "NotReady" | has $status }} + {{ $color = "danger" }} + {{ else if list "Halted" | has $status }} + {{ $color = "gray" }} + {{ end }} + {{- printf "%s" $color -}} + name: Phase + pathTemplate: '{{ .status.phase }}' + priority: 3 + type: string + - name: Total Resources + pathTemplate: '{{ k8s_total_resource_limits . | toRawJson }}' + priority: 3 + type: object + - name: Auth Secret + pathTemplate: '{{ .spec.authSecret.name }}' + priority: 1 + type: string + - name: Termination Policy + pathTemplate: '{{ .spec.terminationPolicy }}' + priority: 3 + type: string + - name: Halted + pathTemplate: '{{ .spec.halted }}' + priority: 1 + type: string + - name: Age + pathTemplate: '{{ .metadata.creationTimestamp }}' + priority: 3 + sort: + enable: true + template: '{{ .metadata.creationTimestamp | toDate "2006-01-02T15:04:05Z07:00" | unixEpoch }}' + type: integer + type: date defaultView: true resource: group: kubedb.com diff --git a/vendor/kmodules.xyz/resource-metadata/hub/resourcetabledefinitions/kubedb.com/v1/redissentinels.yaml b/vendor/kmodules.xyz/resource-metadata/hub/resourcetabledefinitions/kubedb.com/v1/redissentinels.yaml index dd51ac44df..ab0c084705 100644 --- a/vendor/kmodules.xyz/resource-metadata/hub/resourcetabledefinitions/kubedb.com/v1/redissentinels.yaml +++ b/vendor/kmodules.xyz/resource-metadata/hub/resourcetabledefinitions/kubedb.com/v1/redissentinels.yaml @@ -9,6 +9,79 @@ metadata: k8s.io/version: v1 name: kubedb.com-v1-redissentinels spec: + columns: + - name: Name + pathTemplate: '{{ .metadata.name }}' + priority: 3 + type: string + - name: Namespace + pathTemplate: '{{ .metadata.namespace }}' + priority: 3 + type: string + - name: Labels + pathTemplate: '{{ .metadata.labels | toRawJson }}' + priority: 3 + type: object + - name: Annotations + pathTemplate: '{{ .metadata.annotations | toRawJson }}' + priority: 1 + type: object + - name: Version + pathTemplate: '{{ .spec.version }}' + priority: 3 + type: string + - name: Mode + pathTemplate: '{{ k8s_resource_mode . }}' + priority: 3 + type: string + - name: Replicas + pathTemplate: '{{ k8s_resource_replicas_by_roles . | toRawJson }}' + priority: 3 + type: string + - color: + template: | + {{ $status := .status.phase }} + {{ $color := "gray" }} + {{ if list "Provisioning" "DataRestoring" | has $status }} + {{ $color = "info" }} + {{ else if list "Ready" | has $status }} + {{ $color = "success" }} + {{ else if list "Critical" | has $status }} + {{ $color = "warning" }} + {{ else if list "NotReady" | has $status }} + {{ $color = "danger" }} + {{ else if list "Halted" | has $status }} + {{ $color = "gray" }} + {{ end }} + {{- printf "%s" $color -}} + name: Phase + pathTemplate: '{{ .status.phase }}' + priority: 3 + type: string + - name: Total Resources + pathTemplate: '{{ k8s_total_resource_limits . | toRawJson }}' + priority: 3 + type: object + - name: Auth Secret + pathTemplate: '{{ .spec.authSecret.name }}' + priority: 1 + type: string + - name: Termination Policy + pathTemplate: '{{ .spec.terminationPolicy }}' + priority: 3 + type: string + - name: Halted + pathTemplate: '{{ .spec.halted }}' + priority: 1 + type: string + - name: Age + pathTemplate: '{{ .metadata.creationTimestamp }}' + priority: 3 + sort: + enable: true + template: '{{ .metadata.creationTimestamp | toDate "2006-01-02T15:04:05Z07:00" | unixEpoch }}' + type: integer + type: date defaultView: true resource: group: kubedb.com diff --git a/vendor/kmodules.xyz/resource-metadata/hub/resourcetabledefinitions/ops.kubedb.com/v1alpha1/solropsrequests.yaml b/vendor/kmodules.xyz/resource-metadata/hub/resourcetabledefinitions/ops.kubedb.com/v1alpha1/solropsrequests.yaml new file mode 100644 index 0000000000..8f65478f3e --- /dev/null +++ b/vendor/kmodules.xyz/resource-metadata/hub/resourcetabledefinitions/ops.kubedb.com/v1alpha1/solropsrequests.yaml @@ -0,0 +1,18 @@ +apiVersion: meta.k8s.appscode.com/v1alpha1 +kind: ResourceTableDefinition +metadata: + creationTimestamp: null + labels: + k8s.io/group: ops.kubedb.com + k8s.io/kind: SolrOpsRequest + k8s.io/resource: solropsrequests + k8s.io/version: v1alpha1 + name: ops.kubedb.com-v1alpha1-solropsrequests +spec: + defaultView: true + resource: + group: ops.kubedb.com + kind: SolrOpsRequest + name: solropsrequests + scope: Namespaced + version: v1alpha1 diff --git a/vendor/kmodules.xyz/resource-metrics/api/constants.go b/vendor/kmodules.xyz/resource-metrics/api/constants.go index 65a5ebf9d6..316ea16390 100644 --- a/vendor/kmodules.xyz/resource-metrics/api/constants.go +++ b/vendor/kmodules.xyz/resource-metrics/api/constants.go @@ -16,6 +16,8 @@ limitations under the License. package api +import core "k8s.io/api/core/v1" + type PodRole string const ( @@ -30,6 +32,33 @@ const ( PodRoleMongos PodRole = "mongos" PodRoleAggregator PodRole = "aggregator" PodRoleLeaf PodRole = "leaf" + PodRoleMaster PodRole = "master" + PodRoleData PodRole = "data" + PodRoleIngest PodRole = "ingest" + PodRoleDataContent PodRole = "dataContent" + PodRoleDataHot PodRole = "dataHot" + PodRoleDataWarm PodRole = "dataWarm" + PodRoleDataCold PodRole = "dataCold" + PodRoleDataFrozen PodRole = "dataFrozen" + PodRoleML PodRole = "ml" + PodRoleTransform PodRole = "transform" + PodRoleCoordinating PodRole = "coordinating" + PodRoleOverseer PodRole = "overseer" + PodRoleCoordinator PodRole = "coordinator" + PodRoleCoordinators PodRole = "coordinators" + PodRoleBroker PodRole = "broker" + PodRoleBrokers PodRole = "brokers" + PodRoleController PodRole = "controller" + PodRoleCombined PodRole = "combined" + PodRoleOverlords PodRole = "overlords" + PodRoleMiddleManagers PodRole = "middleManagers" + PodRoleHistoricals PodRole = "historicals" + PodRoleRouters PodRole = "routers" ) type ReplicaList map[PodRole]int64 + +type PodInfo struct { + Resource core.ResourceList + Replicas int64 +} diff --git a/vendor/kmodules.xyz/resource-metrics/api/interface.go b/vendor/kmodules.xyz/resource-metrics/api/interface.go index ed3735f43c..e34a05fcf1 100644 --- a/vendor/kmodules.xyz/resource-metrics/api/interface.go +++ b/vendor/kmodules.xyz/resource-metrics/api/interface.go @@ -17,10 +17,15 @@ limitations under the License. package api import ( + "slices" + core "k8s.io/api/core/v1" ) type ResourceCalculator interface { + GetRoleResourceLimitsFn() func(obj map[string]interface{}) (map[PodRole]PodInfo, error) + GetRoleResourceRequestsFn() func(obj map[string]interface{}) (map[PodRole]PodInfo, error) + Replicas(obj map[string]interface{}) (int64, error) RoleReplicas(obj map[string]interface{}) (ReplicaList, error) @@ -35,6 +40,9 @@ type ResourceCalculator interface { RoleResourceLimits(obj map[string]interface{}) (map[PodRole]core.ResourceList, error) RoleResourceRequests(obj map[string]interface{}) (map[PodRole]core.ResourceList, error) + + PodResourceRequests(obj map[string]interface{}) (core.ResourceList, error) + PodResourceLimits(obj map[string]interface{}) (core.ResourceList, error) } type ResourceCalculatorFuncs struct { @@ -48,12 +56,20 @@ type ResourceCalculatorFuncs struct { RoleReplicasFn func(obj map[string]interface{}) (ReplicaList, error) ModeFn func(obj map[string]interface{}) (string, error) UsesTLSFn func(obj map[string]interface{}) (bool, error) - RoleResourceLimitsFn func(obj map[string]interface{}) (map[PodRole]core.ResourceList, error) - RoleResourceRequestsFn func(obj map[string]interface{}) (map[PodRole]core.ResourceList, error) + RoleResourceLimitsFn func(obj map[string]interface{}) (map[PodRole]PodInfo, error) + RoleResourceRequestsFn func(obj map[string]interface{}) (map[PodRole]PodInfo, error) } var _ ResourceCalculator = &ResourceCalculatorFuncs{} +func (c ResourceCalculatorFuncs) GetRoleResourceLimitsFn() func(obj map[string]interface{}) (map[PodRole]PodInfo, error) { + return c.RoleResourceLimitsFn +} + +func (c ResourceCalculatorFuncs) GetRoleResourceRequestsFn() func(obj map[string]interface{}) (map[PodRole]PodInfo, error) { + return c.RoleResourceRequestsFn +} + func (c ResourceCalculatorFuncs) Replicas(obj map[string]interface{}) (int64, error) { replicas, err := c.RoleReplicas(obj) if err != nil { @@ -123,9 +139,74 @@ func (c ResourceCalculatorFuncs) AppResourceRequests(obj map[string]interface{}) } func (c ResourceCalculatorFuncs) RoleResourceLimits(obj map[string]interface{}) (map[PodRole]core.ResourceList, error) { - return c.RoleResourceLimitsFn(obj) + ret := make(map[PodRole]core.ResourceList) + rr, err := c.RoleResourceLimitsFn(obj) + if err != nil { + return nil, err + } + for role, info := range rr { + ret[role] = MulResourceList(info.Resource, info.Replicas) + } + return ret, nil } func (c ResourceCalculatorFuncs) RoleResourceRequests(obj map[string]interface{}) (map[PodRole]core.ResourceList, error) { - return c.RoleResourceRequestsFn(obj) + ret := make(map[PodRole]core.ResourceList) + rr, err := c.RoleResourceRequestsFn(obj) + if err != nil { + return nil, err + } + for role, info := range rr { + ret[role] = MulResourceList(info.Resource, info.Replicas) + } + return ret, nil +} + +func (c ResourceCalculatorFuncs) PodResourceLimits(obj map[string]interface{}) (core.ResourceList, error) { + rl, err := c.RoleResourceLimitsFn(obj) + if err != nil { + return nil, err + } + return c.calcForPod(rl), nil +} + +func (c ResourceCalculatorFuncs) PodResourceRequests(obj map[string]interface{}) (core.ResourceList, error) { + rr, err := c.RoleResourceRequestsFn(obj) + if err != nil { + return nil, err + } + return c.calcForPod(rr), nil +} + +func (c ResourceCalculatorFuncs) calcForPod(roleInfoMap map[PodRole]PodInfo) core.ResourceList { + mx := core.ResourceList{} + extraRoles := c.getExtraRoles() + for _, role := range c.AppRoles { + if _, exist := roleInfoMap[role]; !exist { + continue + } + res := roleInfoMap[role].Resource + for _, extraRole := range extraRoles { + if _, exist := roleInfoMap[extraRole]; !exist { + continue + } + extraRes := roleInfoMap[extraRole].Resource + res = AddResourceList(res, extraRes) + } + if initInfo, exist := roleInfoMap[PodRoleInit]; exist { + res = MaxResourceList(res, initInfo.Resource) + } + mx = MaxResourceList(res, mx) + } + return mx +} + +func (c ResourceCalculatorFuncs) getExtraRoles() []PodRole { + roles := make([]PodRole, 0) + for _, role := range c.RuntimeRoles { + if !slices.Contains(c.AppRoles, role) { + roles = append(roles, role) + } + } + return roles } diff --git a/vendor/kmodules.xyz/resource-metrics/apps/v1/daemonset.go b/vendor/kmodules.xyz/resource-metrics/apps/v1/daemonset.go index 813dd80f6a..dc746a34d4 100644 --- a/vendor/kmodules.xyz/resource-metrics/apps/v1/daemonset.go +++ b/vendor/kmodules.xyz/resource-metrics/apps/v1/daemonset.go @@ -43,8 +43,8 @@ func (_ DaemonSet) roleReplicasFn(obj map[string]interface{}) (api.ReplicaList, return nil, nil } -func (r DaemonSet) roleResourceFn(fn func(rr core.ResourceRequirements) core.ResourceList) func(obj map[string]interface{}) (map[api.PodRole]core.ResourceList, error) { - return func(obj map[string]interface{}) (map[api.PodRole]core.ResourceList, error) { +func (r DaemonSet) roleResourceFn(fn func(rr core.ResourceRequirements) core.ResourceList) func(obj map[string]interface{}) (map[api.PodRole]api.PodInfo, error) { + return func(obj map[string]interface{}) (map[api.PodRole]api.PodInfo, error) { containers, err := api.AggregateContainerResources(obj, fn, api.AddResourceList, "spec", "template", "spec", "containers") if err != nil { return nil, err @@ -53,9 +53,9 @@ func (r DaemonSet) roleResourceFn(fn func(rr core.ResourceRequirements) core.Res if err != nil { return nil, err } - return map[api.PodRole]core.ResourceList{ - api.PodRoleDefault: containers, - api.PodRoleInit: initContainers, + return map[api.PodRole]api.PodInfo{ + api.PodRoleDefault: {Resource: containers, Replicas: 1}, + api.PodRoleInit: {Resource: initContainers, Replicas: 1}, }, nil } } diff --git a/vendor/kmodules.xyz/resource-metrics/apps/v1/deployment.go b/vendor/kmodules.xyz/resource-metrics/apps/v1/deployment.go index 5cc23c256b..b26bed4bdf 100644 --- a/vendor/kmodules.xyz/resource-metrics/apps/v1/deployment.go +++ b/vendor/kmodules.xyz/resource-metrics/apps/v1/deployment.go @@ -53,8 +53,8 @@ func (_ Deployment) roleReplicasFn(obj map[string]interface{}) (api.ReplicaList, return api.ReplicaList{api.PodRoleDefault: replicas}, nil } -func (r Deployment) roleResourceFn(fn func(rr core.ResourceRequirements) core.ResourceList) func(obj map[string]interface{}) (map[api.PodRole]core.ResourceList, error) { - return func(obj map[string]interface{}) (map[api.PodRole]core.ResourceList, error) { +func (r Deployment) roleResourceFn(fn func(rr core.ResourceRequirements) core.ResourceList) func(obj map[string]interface{}) (map[api.PodRole]api.PodInfo, error) { + return func(obj map[string]interface{}) (map[api.PodRole]api.PodInfo, error) { rr, err := r.roleReplicasFn(obj) if err != nil { return nil, err @@ -69,9 +69,9 @@ func (r Deployment) roleResourceFn(fn func(rr core.ResourceRequirements) core.Re if err != nil { return nil, err } - return map[api.PodRole]core.ResourceList{ - api.PodRoleDefault: api.MulResourceList(containers, replicas), - api.PodRoleInit: api.MulResourceList(initContainers, replicas), + return map[api.PodRole]api.PodInfo{ + api.PodRoleDefault: {Resource: containers, Replicas: replicas}, + api.PodRoleInit: {Resource: initContainers, Replicas: replicas}, }, nil } } diff --git a/vendor/kmodules.xyz/resource-metrics/apps/v1/replicaset.go b/vendor/kmodules.xyz/resource-metrics/apps/v1/replicaset.go index 9a21294b8a..22ee9f4871 100644 --- a/vendor/kmodules.xyz/resource-metrics/apps/v1/replicaset.go +++ b/vendor/kmodules.xyz/resource-metrics/apps/v1/replicaset.go @@ -53,8 +53,8 @@ func (_ ReplicaSet) roleReplicasFn(obj map[string]interface{}) (api.ReplicaList, return api.ReplicaList{api.PodRoleDefault: replicas}, nil } -func (r ReplicaSet) roleResourceFn(fn func(rr core.ResourceRequirements) core.ResourceList) func(obj map[string]interface{}) (map[api.PodRole]core.ResourceList, error) { - return func(obj map[string]interface{}) (map[api.PodRole]core.ResourceList, error) { +func (r ReplicaSet) roleResourceFn(fn func(rr core.ResourceRequirements) core.ResourceList) func(obj map[string]interface{}) (map[api.PodRole]api.PodInfo, error) { + return func(obj map[string]interface{}) (map[api.PodRole]api.PodInfo, error) { rr, err := r.roleReplicasFn(obj) if err != nil { return nil, err @@ -69,9 +69,9 @@ func (r ReplicaSet) roleResourceFn(fn func(rr core.ResourceRequirements) core.Re if err != nil { return nil, err } - return map[api.PodRole]core.ResourceList{ - api.PodRoleDefault: api.MulResourceList(containers, replicas), - api.PodRoleInit: api.MulResourceList(initContainers, replicas), + return map[api.PodRole]api.PodInfo{ + api.PodRoleDefault: {Resource: containers, Replicas: replicas}, + api.PodRoleInit: {Resource: initContainers, Replicas: replicas}, }, nil } } diff --git a/vendor/kmodules.xyz/resource-metrics/apps/v1/statefulset.go b/vendor/kmodules.xyz/resource-metrics/apps/v1/statefulset.go index 9eda6d7391..fb81f94aaa 100644 --- a/vendor/kmodules.xyz/resource-metrics/apps/v1/statefulset.go +++ b/vendor/kmodules.xyz/resource-metrics/apps/v1/statefulset.go @@ -53,8 +53,8 @@ func (_ StatefulSet) roleReplicasFn(obj map[string]interface{}) (api.ReplicaList return api.ReplicaList{api.PodRoleDefault: replicas}, nil } -func (r StatefulSet) roleResourceFn(fn func(rr core.ResourceRequirements) core.ResourceList) func(obj map[string]interface{}) (map[api.PodRole]core.ResourceList, error) { - return func(obj map[string]interface{}) (map[api.PodRole]core.ResourceList, error) { +func (r StatefulSet) roleResourceFn(fn func(rr core.ResourceRequirements) core.ResourceList) func(obj map[string]interface{}) (map[api.PodRole]api.PodInfo, error) { + return func(obj map[string]interface{}) (map[api.PodRole]api.PodInfo, error) { rr, err := r.roleReplicasFn(obj) if err != nil { return nil, err @@ -69,9 +69,9 @@ func (r StatefulSet) roleResourceFn(fn func(rr core.ResourceRequirements) core.R if err != nil { return nil, err } - return map[api.PodRole]core.ResourceList{ - api.PodRoleDefault: api.MulResourceList(containers, replicas), - api.PodRoleInit: api.MulResourceList(initContainers, replicas), + return map[api.PodRole]api.PodInfo{ + api.PodRoleDefault: {Resource: containers, Replicas: replicas}, + api.PodRoleInit: {Resource: initContainers, Replicas: replicas}, }, nil } } diff --git a/vendor/kmodules.xyz/resource-metrics/batch/v1/cronjob.go b/vendor/kmodules.xyz/resource-metrics/batch/v1/cronjob.go index e44ff8ff77..a1bc877f4c 100644 --- a/vendor/kmodules.xyz/resource-metrics/batch/v1/cronjob.go +++ b/vendor/kmodules.xyz/resource-metrics/batch/v1/cronjob.go @@ -43,8 +43,8 @@ func (_ CronJob) roleReplicasFn(obj map[string]interface{}) (api.ReplicaList, er return nil, nil } -func (r CronJob) roleResourceFn(fn func(rr core.ResourceRequirements) core.ResourceList) func(obj map[string]interface{}) (map[api.PodRole]core.ResourceList, error) { - return func(obj map[string]interface{}) (map[api.PodRole]core.ResourceList, error) { +func (r CronJob) roleResourceFn(fn func(rr core.ResourceRequirements) core.ResourceList) func(obj map[string]interface{}) (map[api.PodRole]api.PodInfo, error) { + return func(obj map[string]interface{}) (map[api.PodRole]api.PodInfo, error) { containers, err := api.AggregateContainerResources(obj, fn, api.AddResourceList, "spec", "jobTemplate", "spec", "template", "spec", "containers") if err != nil { return nil, err @@ -53,9 +53,9 @@ func (r CronJob) roleResourceFn(fn func(rr core.ResourceRequirements) core.Resou if err != nil { return nil, err } - return map[api.PodRole]core.ResourceList{ - api.PodRoleDefault: containers, - api.PodRoleInit: initContainers, + return map[api.PodRole]api.PodInfo{ + api.PodRoleDefault: {Resource: containers, Replicas: 1}, + api.PodRoleInit: {Resource: initContainers, Replicas: 1}, }, nil } } diff --git a/vendor/kmodules.xyz/resource-metrics/batch/v1/job.go b/vendor/kmodules.xyz/resource-metrics/batch/v1/job.go index 07cb3b8924..6514df6b89 100644 --- a/vendor/kmodules.xyz/resource-metrics/batch/v1/job.go +++ b/vendor/kmodules.xyz/resource-metrics/batch/v1/job.go @@ -43,8 +43,8 @@ func (_ Job) roleReplicasFn(obj map[string]interface{}) (api.ReplicaList, error) return nil, nil } -func (r Job) roleResourceFn(fn func(rr core.ResourceRequirements) core.ResourceList) func(obj map[string]interface{}) (map[api.PodRole]core.ResourceList, error) { - return func(obj map[string]interface{}) (map[api.PodRole]core.ResourceList, error) { +func (r Job) roleResourceFn(fn func(rr core.ResourceRequirements) core.ResourceList) func(obj map[string]interface{}) (map[api.PodRole]api.PodInfo, error) { + return func(obj map[string]interface{}) (map[api.PodRole]api.PodInfo, error) { containers, err := api.AggregateContainerResources(obj, fn, api.AddResourceList, "spec", "template", "spec", "containers") if err != nil { return nil, err @@ -53,9 +53,9 @@ func (r Job) roleResourceFn(fn func(rr core.ResourceRequirements) core.ResourceL if err != nil { return nil, err } - return map[api.PodRole]core.ResourceList{ - api.PodRoleDefault: containers, - api.PodRoleInit: initContainers, + return map[api.PodRole]api.PodInfo{ + api.PodRoleDefault: {Resource: containers, Replicas: 1}, + api.PodRoleInit: {Resource: initContainers, Replicas: 1}, }, nil } } diff --git a/vendor/kmodules.xyz/resource-metrics/batch/v1beta1/cronjob.go b/vendor/kmodules.xyz/resource-metrics/batch/v1beta1/cronjob.go index f77da72951..7ad9274a3b 100644 --- a/vendor/kmodules.xyz/resource-metrics/batch/v1beta1/cronjob.go +++ b/vendor/kmodules.xyz/resource-metrics/batch/v1beta1/cronjob.go @@ -43,8 +43,8 @@ func (_ CronJob) roleReplicasFn(obj map[string]interface{}) (api.ReplicaList, er return nil, nil } -func (r CronJob) roleResourceFn(fn func(rr core.ResourceRequirements) core.ResourceList) func(obj map[string]interface{}) (map[api.PodRole]core.ResourceList, error) { - return func(obj map[string]interface{}) (map[api.PodRole]core.ResourceList, error) { +func (r CronJob) roleResourceFn(fn func(rr core.ResourceRequirements) core.ResourceList) func(obj map[string]interface{}) (map[api.PodRole]api.PodInfo, error) { + return func(obj map[string]interface{}) (map[api.PodRole]api.PodInfo, error) { containers, err := api.AggregateContainerResources(obj, fn, api.AddResourceList, "spec", "jobTemplate", "spec", "template", "spec", "containers") if err != nil { return nil, err @@ -53,9 +53,9 @@ func (r CronJob) roleResourceFn(fn func(rr core.ResourceRequirements) core.Resou if err != nil { return nil, err } - return map[api.PodRole]core.ResourceList{ - api.PodRoleDefault: containers, - api.PodRoleInit: initContainers, + return map[api.PodRole]api.PodInfo{ + api.PodRoleDefault: {Resource: containers, Replicas: 1}, + api.PodRoleInit: {Resource: initContainers, Replicas: 1}, }, nil } } diff --git a/vendor/kmodules.xyz/resource-metrics/calculator.go b/vendor/kmodules.xyz/resource-metrics/calculator.go index b50dae49b4..22399bd468 100644 --- a/vendor/kmodules.xyz/resource-metrics/calculator.go +++ b/vendor/kmodules.xyz/resource-metrics/calculator.go @@ -23,6 +23,7 @@ import ( _ "kmodules.xyz/resource-metrics/batch/v1beta1" _ "kmodules.xyz/resource-metrics/core/v1" _ "kmodules.xyz/resource-metrics/kafka.kubedb.com/v1alpha1" + _ "kmodules.xyz/resource-metrics/kubedb.com/v1" _ "kmodules.xyz/resource-metrics/kubedb.com/v1alpha2" _ "kmodules.xyz/resource-metrics/kubevault.com/v1alpha2" _ "kmodules.xyz/resource-metrics/ops.kubedb.com/v1alpha1" @@ -109,3 +110,19 @@ func RoleResourceRequests(obj map[string]interface{}) (map[api.PodRole]core.Reso } return c.RoleResourceRequests(obj) } + +func PodResourceLimits(obj map[string]interface{}) (core.ResourceList, error) { + c, err := api.Load(obj) + if err != nil { + return nil, err + } + return c.PodResourceLimits(obj) +} + +func PodResourceRequests(obj map[string]interface{}) (core.ResourceList, error) { + c, err := api.Load(obj) + if err != nil { + return nil, err + } + return c.PodResourceRequests(obj) +} diff --git a/vendor/kmodules.xyz/resource-metrics/core/v1/pod.go b/vendor/kmodules.xyz/resource-metrics/core/v1/pod.go index 24824d8eb7..1dd68088c6 100644 --- a/vendor/kmodules.xyz/resource-metrics/core/v1/pod.go +++ b/vendor/kmodules.xyz/resource-metrics/core/v1/pod.go @@ -42,8 +42,8 @@ func (_ Pod) roleReplicasFn(obj map[string]interface{}) (api.ReplicaList, error) return api.ReplicaList{api.PodRoleDefault: 1}, nil } -func (r Pod) roleResourceFn(fn func(rr core.ResourceRequirements) core.ResourceList) func(obj map[string]interface{}) (map[api.PodRole]core.ResourceList, error) { - return func(obj map[string]interface{}) (map[api.PodRole]core.ResourceList, error) { +func (r Pod) roleResourceFn(fn func(rr core.ResourceRequirements) core.ResourceList) func(obj map[string]interface{}) (map[api.PodRole]api.PodInfo, error) { + return func(obj map[string]interface{}) (map[api.PodRole]api.PodInfo, error) { containers, err := api.AggregateContainerResources(obj, fn, api.AddResourceList, "spec", "containers") if err != nil { return nil, err @@ -52,9 +52,9 @@ func (r Pod) roleResourceFn(fn func(rr core.ResourceRequirements) core.ResourceL if err != nil { return nil, err } - return map[api.PodRole]core.ResourceList{ - api.PodRoleDefault: containers, - api.PodRoleInit: initContainer, + return map[api.PodRole]api.PodInfo{ + api.PodRoleDefault: {Resource: containers, Replicas: 1}, + api.PodRoleInit: {Resource: initContainer, Replicas: 1}, }, nil } } diff --git a/vendor/kmodules.xyz/resource-metrics/core/v1/rc.go b/vendor/kmodules.xyz/resource-metrics/core/v1/rc.go index 444847dc14..5c1720baeb 100644 --- a/vendor/kmodules.xyz/resource-metrics/core/v1/rc.go +++ b/vendor/kmodules.xyz/resource-metrics/core/v1/rc.go @@ -52,8 +52,8 @@ func (_ ReplicationController) roleReplicasFn(obj map[string]interface{}) (api.R return api.ReplicaList{api.PodRoleDefault: replicas}, nil } -func (r ReplicationController) roleResourceFn(fn func(rr core.ResourceRequirements) core.ResourceList) func(obj map[string]interface{}) (map[api.PodRole]core.ResourceList, error) { - return func(obj map[string]interface{}) (map[api.PodRole]core.ResourceList, error) { +func (r ReplicationController) roleResourceFn(fn func(rr core.ResourceRequirements) core.ResourceList) func(obj map[string]interface{}) (map[api.PodRole]api.PodInfo, error) { + return func(obj map[string]interface{}) (map[api.PodRole]api.PodInfo, error) { rr, err := r.roleReplicasFn(obj) if err != nil { return nil, err @@ -68,9 +68,9 @@ func (r ReplicationController) roleResourceFn(fn func(rr core.ResourceRequiremen if err != nil { return nil, err } - return map[api.PodRole]core.ResourceList{ - api.PodRoleDefault: api.MulResourceList(container, replicas), - api.PodRoleInit: api.MulResourceList(initContainers, replicas), + return map[api.PodRole]api.PodInfo{ + api.PodRoleDefault: {Resource: container, Replicas: replicas}, + api.PodRoleInit: {Resource: initContainers, Replicas: replicas}, }, nil } } diff --git a/vendor/kmodules.xyz/resource-metrics/kafka.kubedb.com/v1alpha1/connectcluster.go b/vendor/kmodules.xyz/resource-metrics/kafka.kubedb.com/v1alpha1/connectcluster.go index 7198bd27e3..56f2515c71 100644 --- a/vendor/kmodules.xyz/resource-metrics/kafka.kubedb.com/v1alpha1/connectcluster.go +++ b/vendor/kmodules.xyz/resource-metrics/kafka.kubedb.com/v1alpha1/connectcluster.go @@ -74,8 +74,8 @@ func (r ConnectCluster) usesTLSFn(obj map[string]interface{}) (bool, error) { return found, err } -func (r ConnectCluster) roleResourceFn(fn func(rr core.ResourceRequirements) core.ResourceList) func(obj map[string]interface{}) (map[api.PodRole]core.ResourceList, error) { - return func(obj map[string]interface{}) (map[api.PodRole]core.ResourceList, error) { +func (r ConnectCluster) roleResourceFn(fn func(rr core.ResourceRequirements) core.ResourceList) func(obj map[string]interface{}) (map[api.PodRole]api.PodInfo, error) { + return func(obj map[string]interface{}) (map[api.PodRole]api.PodInfo, error) { exporter, err := api.ContainerResources(obj, fn, "spec", "monitor", "prometheus", "exporter") if err != nil { return nil, err @@ -84,9 +84,9 @@ func (r ConnectCluster) roleResourceFn(fn func(rr core.ResourceRequirements) cor if err != nil { return nil, err } - return map[api.PodRole]core.ResourceList{ - api.PodRoleDefault: api.MulResourceList(container, replicas), - api.PodRoleExporter: api.MulResourceList(exporter, replicas), + return map[api.PodRole]api.PodInfo{ + api.PodRoleDefault: {Resource: container, Replicas: replicas}, + api.PodRoleExporter: {Resource: exporter, Replicas: replicas}, }, nil } } diff --git a/vendor/kmodules.xyz/resource-metrics/kubedb.com/v1/constants.go b/vendor/kmodules.xyz/resource-metrics/kubedb.com/v1/constants.go new file mode 100644 index 0000000000..978866aeaf --- /dev/null +++ b/vendor/kmodules.xyz/resource-metrics/kubedb.com/v1/constants.go @@ -0,0 +1,43 @@ +/* +Copyright AppsCode Inc. and Contributors + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +const ( + DBModeEnsemble = "Ensemble" + DBModeCluster = "Cluster" + DBModeSharded = "Sharded" + DBModeStandalone = "Standalone" + DBModeReplicaSet = "ReplicaSet" + DBModeDedicated = "Dedicated" + DBModeCombined = "Combined" +) + +const ( + ElasticsearchContainerName = "elasticsearch" + MongoDBContainerName = "mongodb" + MySQLContainerName = "mysql" + PerconaXtraDBContainerName = "perconaxtradb" + MariaDBContainerName = "mariadb" + PostgresContainerName = "postgres" + ProxySQLContainerName = "proxysql" + RedisContainerName = "redis" + PgBouncerContainerName = "pgbouncer" + KafkaContainerName = "kafka" + MemcachedContainerName = "memcached" + RedisSentinelContainerName = "redissentinel" + MySQLRouterContainerName = "mysql-router" +) diff --git a/vendor/kmodules.xyz/resource-metrics/kubedb.com/v1/elasticsearch.go b/vendor/kmodules.xyz/resource-metrics/kubedb.com/v1/elasticsearch.go new file mode 100644 index 0000000000..bdf2fc24e9 --- /dev/null +++ b/vendor/kmodules.xyz/resource-metrics/kubedb.com/v1/elasticsearch.go @@ -0,0 +1,173 @@ +/* +Copyright AppsCode Inc. and Contributors + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + "fmt" + "reflect" + + "kmodules.xyz/resource-metrics/api" + + "gomodules.xyz/pointer" + core "k8s.io/api/core/v1" + "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" +) + +func init() { + api.Register(schema.GroupVersionKind{ + Group: "kubedb.com", + Version: "v1", + Kind: "Elasticsearch", + }, Elasticsearch{}.ResourceCalculator()) +} + +type Elasticsearch struct{} + +func (r Elasticsearch) ResourceCalculator() api.ResourceCalculator { + return &api.ResourceCalculatorFuncs{ + AppRoles: []api.PodRole{api.PodRoleDefault, api.PodRoleMaster, api.PodRoleIngest, api.PodRoleData, api.PodRoleDataContent, api.PodRoleDataCold, api.PodRoleDataHot, api.PodRoleDataWarm, api.PodRoleDataFrozen, api.PodRoleML, api.PodRoleTransform, api.PodRoleCoordinating}, + RuntimeRoles: []api.PodRole{api.PodRoleDefault, api.PodRoleMaster, api.PodRoleIngest, api.PodRoleData, api.PodRoleDataContent, api.PodRoleDataCold, api.PodRoleDataHot, api.PodRoleDataWarm, api.PodRoleDataFrozen, api.PodRoleML, api.PodRoleTransform, api.PodRoleCoordinating, api.PodRoleExporter}, + RoleReplicasFn: r.roleReplicasFn, + ModeFn: r.modeFn, + UsesTLSFn: r.usesTLSFn, + RoleResourceLimitsFn: r.roleResourceFn(api.ResourceLimits), + RoleResourceRequestsFn: r.roleResourceFn(api.ResourceRequests), + } +} + +func (r Elasticsearch) roleReplicasFn(obj map[string]interface{}) (api.ReplicaList, error) { + result := api.ReplicaList{} + + topology, found, err := unstructured.NestedMap(obj, "spec", "topology") + if err != nil { + return nil, err + } + if found && topology != nil { + for role, roleSpec := range topology { + roleReplicas, found, err := unstructured.NestedInt64(roleSpec.(map[string]interface{}), "replicas") + if err != nil { + return nil, err + } + if found { + result[api.PodRole(role)] = roleReplicas + } + } + } else { + // Combined mode + replicas, found, err := unstructured.NestedInt64(obj, "spec", "replicas") + if err != nil { + return nil, fmt.Errorf("failed to read spec.replicas %v: %w", obj, err) + } + if !found { + result[api.PodRoleDefault] = 1 + } else { + result[api.PodRoleDefault] = replicas + } + } + return result, nil +} + +func (r Elasticsearch) modeFn(obj map[string]interface{}) (string, error) { + topology, found, err := unstructured.NestedFieldNoCopy(obj, "spec", "topology") + if err != nil { + return "", err + } + if found && !reflect.ValueOf(topology).IsNil() { + return DBModeDedicated, nil + } + return DBModeCombined, nil +} + +func (r Elasticsearch) usesTLSFn(obj map[string]interface{}) (bool, error) { + _, found, err := unstructured.NestedFieldNoCopy(obj, "spec", "enableSSL") + return found, err +} + +func (r Elasticsearch) roleResourceFn(fn func(rr core.ResourceRequirements) core.ResourceList) func(obj map[string]interface{}) (map[api.PodRole]api.PodInfo, error) { + return func(obj map[string]interface{}) (map[api.PodRole]api.PodInfo, error) { + exporter, err := api.ContainerResources(obj, fn, "spec", "monitor", "prometheus", "exporter") + if err != nil { + return nil, err + } + + topology, found, err := unstructured.NestedMap(obj, "spec", "topology") + if err != nil { + return nil, err + } + if found && topology != nil { + var replicas int64 = 0 + result := map[api.PodRole]api.PodInfo{} + + for role, roleSpec := range topology { + rolePerReplicaResources, roleReplicas, err := ElasticsearchNodeResources(roleSpec.(map[string]interface{}), fn) + if err != nil { + return nil, err + } + replicas += roleReplicas + result[api.PodRole(role)] = api.PodInfo{Resource: rolePerReplicaResources, Replicas: roleReplicas} + } + + result[api.PodRoleExporter] = api.PodInfo{Resource: exporter, Replicas: replicas} + return result, nil + } + + // Elasticsearch Combined + container, replicas, err := api.AppNodeResourcesV2(obj, fn, ElasticsearchContainerName, "spec") + if err != nil { + return nil, err + } + + return map[api.PodRole]api.PodInfo{ + api.PodRoleDefault: {Resource: container, Replicas: replicas}, + api.PodRoleExporter: {Resource: exporter, Replicas: replicas}, + }, nil + } +} + +type ElasticsearchNode struct { + Replicas *int64 `json:"replicas,omitempty"` + Resources core.ResourceRequirements `json:"resources,omitempty"` + Storage core.PersistentVolumeClaimSpec `json:"storage,omitempty"` +} + +func ElasticsearchNodeResources( + obj map[string]interface{}, + fn func(rr core.ResourceRequirements) core.ResourceList, + fields ...string, +) (core.ResourceList, int64, error) { + val, found, err := unstructured.NestedFieldNoCopy(obj, fields...) + if !found || err != nil { + return nil, 0, err + } + + var node ElasticsearchNode + err = runtime.DefaultUnstructuredConverter.FromUnstructured(val.(map[string]interface{}), &node) + if err != nil { + return nil, 0, fmt.Errorf("failed to parse node %#v: %w", node, err) + } + + if node.Replicas == nil { + node.Replicas = pointer.Int64P(1) + } + rr := fn(node.Resources) + sr := fn(api.ToResourceRequirements(node.Storage.Resources)) + rr[core.ResourceStorage] = *sr.Storage() + + return rr, *node.Replicas, nil +} diff --git a/vendor/kmodules.xyz/resource-metrics/kubedb.com/v1/kafka.go b/vendor/kmodules.xyz/resource-metrics/kubedb.com/v1/kafka.go new file mode 100644 index 0000000000..09693f5d3c --- /dev/null +++ b/vendor/kmodules.xyz/resource-metrics/kubedb.com/v1/kafka.go @@ -0,0 +1,140 @@ +/* +Copyright AppsCode Inc. and Contributors + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + "fmt" + "reflect" + + "kmodules.xyz/resource-metrics/api" + + core "k8s.io/api/core/v1" + "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" + "k8s.io/apimachinery/pkg/runtime/schema" +) + +func init() { + api.Register(schema.GroupVersionKind{ + Group: "kubedb.com", + Version: "v1", + Kind: "Kafka", + }, Kafka{}.ResourceCalculator()) +} + +type Kafka struct{} + +func (r Kafka) ResourceCalculator() api.ResourceCalculator { + return &api.ResourceCalculatorFuncs{ + AppRoles: []api.PodRole{api.PodRoleDefault, api.PodRoleBroker, api.PodRoleController, api.PodRoleCombined}, + RuntimeRoles: []api.PodRole{api.PodRoleDefault, api.PodRoleBroker, api.PodRoleController, api.PodRoleCombined, api.PodRoleExporter}, + RoleReplicasFn: r.roleReplicasFn, + ModeFn: r.modeFn, + UsesTLSFn: r.usesTLSFn, + RoleResourceLimitsFn: r.roleResourceFn(api.ResourceLimits), + RoleResourceRequestsFn: r.roleResourceFn(api.ResourceRequests), + } +} + +func (r Kafka) roleReplicasFn(obj map[string]interface{}) (api.ReplicaList, error) { + result := api.ReplicaList{} + + topology, found, err := unstructured.NestedMap(obj, "spec", "topology") + if err != nil { + return nil, err + } + if found && topology != nil { + // dedicated topology mode + for role, roleSpec := range topology { + roleReplicas, found, err := unstructured.NestedInt64(roleSpec.(map[string]interface{}), "replicas") + if err != nil { + return nil, err + } + if found { + result[api.PodRole(role)] = roleReplicas + } + } + } else { + // Combined mode + replicas, found, err := unstructured.NestedInt64(obj, "spec", "replicas") + if err != nil { + return nil, fmt.Errorf("failed to read spec.replicas %v: %w", obj, err) + } + if !found { + result[api.PodRoleDefault] = 1 + } else { + result[api.PodRoleDefault] = replicas + } + } + return result, nil +} + +func (r Kafka) modeFn(obj map[string]interface{}) (string, error) { + topology, found, err := unstructured.NestedFieldNoCopy(obj, "spec", "topology") + if err != nil { + return "", err + } + if found && !reflect.ValueOf(topology).IsNil() { + return DBModeDedicated, nil + } + return DBModeCombined, nil +} + +func (r Kafka) usesTLSFn(obj map[string]interface{}) (bool, error) { + _, found, err := unstructured.NestedFieldNoCopy(obj, "spec", "enableSSL") + return found, err +} + +func (r Kafka) roleResourceFn(fn func(rr core.ResourceRequirements) core.ResourceList) func(obj map[string]interface{}) (map[api.PodRole]api.PodInfo, error) { + return func(obj map[string]interface{}) (map[api.PodRole]api.PodInfo, error) { + exporter, err := api.ContainerResources(obj, fn, "spec", "monitor", "prometheus", "exporter") + if err != nil { + return nil, err + } + + topology, found, err := unstructured.NestedMap(obj, "spec", "topology") + if err != nil { + return nil, err + } + if found && topology != nil { + var replicas int64 = 0 + result := map[api.PodRole]api.PodInfo{} + + for role := range topology { + rolePerReplicaResources, roleReplicas, err := api.AppNodeResourcesV2(topology, fn, KafkaContainerName, role) + if err != nil { + return nil, err + } + replicas += roleReplicas + result[api.PodRole(role)] = api.PodInfo{Resource: rolePerReplicaResources, Replicas: roleReplicas} + } + + result[api.PodRoleExporter] = api.PodInfo{Resource: exporter, Replicas: replicas} + return result, nil + } + + // Kafka Combined + container, replicas, err := api.AppNodeResourcesV2(obj, fn, KafkaContainerName, "spec") + if err != nil { + return nil, err + } + + return map[api.PodRole]api.PodInfo{ + api.PodRoleDefault: {Resource: container, Replicas: replicas}, + api.PodRoleExporter: {Resource: exporter, Replicas: replicas}, + }, nil + } +} diff --git a/vendor/kmodules.xyz/resource-metrics/kubedb.com/v1/mariadb.go b/vendor/kmodules.xyz/resource-metrics/kubedb.com/v1/mariadb.go new file mode 100644 index 0000000000..2b8a0104da --- /dev/null +++ b/vendor/kmodules.xyz/resource-metrics/kubedb.com/v1/mariadb.go @@ -0,0 +1,94 @@ +/* +Copyright AppsCode Inc. and Contributors + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + "fmt" + + "kmodules.xyz/resource-metrics/api" + + core "k8s.io/api/core/v1" + "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" + "k8s.io/apimachinery/pkg/runtime/schema" +) + +func init() { + api.Register(schema.GroupVersionKind{ + Group: "kubedb.com", + Version: "v1", + Kind: "MariaDB", + }, MariaDB{}.ResourceCalculator()) +} + +type MariaDB struct{} + +func (r MariaDB) ResourceCalculator() api.ResourceCalculator { + return &api.ResourceCalculatorFuncs{ + AppRoles: []api.PodRole{api.PodRoleDefault}, + RuntimeRoles: []api.PodRole{api.PodRoleDefault, api.PodRoleExporter}, + RoleReplicasFn: r.roleReplicasFn, + ModeFn: r.modeFn, + UsesTLSFn: r.usesTLSFn, + RoleResourceLimitsFn: r.roleResourceFn(api.ResourceLimits), + RoleResourceRequestsFn: r.roleResourceFn(api.ResourceRequests), + } +} + +func (r MariaDB) roleReplicasFn(obj map[string]interface{}) (api.ReplicaList, error) { + replicas, found, err := unstructured.NestedInt64(obj, "spec", "replicas") + if err != nil { + return nil, fmt.Errorf("failed to read spec.replicas %v: %w", obj, err) + } + if !found { + return api.ReplicaList{api.PodRoleDefault: 1}, nil + } + return api.ReplicaList{api.PodRoleDefault: replicas}, nil +} + +func (r MariaDB) modeFn(obj map[string]interface{}) (string, error) { + replicas, _, err := unstructured.NestedInt64(obj, "spec", "replicas") + if err != nil { + return "", err + } + if replicas > 1 { + return DBModeCluster, nil + } + return DBModeStandalone, nil +} + +func (r MariaDB) usesTLSFn(obj map[string]interface{}) (bool, error) { + _, found, err := unstructured.NestedFieldNoCopy(obj, "spec", "tls") + return found, err +} + +func (r MariaDB) roleResourceFn(fn func(rr core.ResourceRequirements) core.ResourceList) func(obj map[string]interface{}) (map[api.PodRole]api.PodInfo, error) { + return func(obj map[string]interface{}) (map[api.PodRole]api.PodInfo, error) { + container, replicas, err := api.AppNodeResourcesV2(obj, fn, MariaDBContainerName, "spec") + if err != nil { + return nil, err + } + + exporter, err := api.ContainerResources(obj, fn, "spec", "monitor", "prometheus", "exporter") + if err != nil { + return nil, err + } + return map[api.PodRole]api.PodInfo{ + api.PodRoleDefault: {Resource: container, Replicas: replicas}, + api.PodRoleExporter: {Resource: exporter, Replicas: replicas}, + }, nil + } +} diff --git a/vendor/kmodules.xyz/resource-metrics/kubedb.com/v1/memcached.go b/vendor/kmodules.xyz/resource-metrics/kubedb.com/v1/memcached.go new file mode 100644 index 0000000000..abdc021d8d --- /dev/null +++ b/vendor/kmodules.xyz/resource-metrics/kubedb.com/v1/memcached.go @@ -0,0 +1,94 @@ +/* +Copyright AppsCode Inc. and Contributors + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + "fmt" + + "kmodules.xyz/resource-metrics/api" + + core "k8s.io/api/core/v1" + "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" + "k8s.io/apimachinery/pkg/runtime/schema" +) + +func init() { + api.Register(schema.GroupVersionKind{ + Group: "kubedb.com", + Version: "v1", + Kind: "Memcached", + }, Memcached{}.ResourceCalculator()) +} + +type Memcached struct{} + +func (r Memcached) ResourceCalculator() api.ResourceCalculator { + return &api.ResourceCalculatorFuncs{ + AppRoles: []api.PodRole{api.PodRoleDefault}, + RuntimeRoles: []api.PodRole{api.PodRoleDefault, api.PodRoleExporter}, + RoleReplicasFn: r.roleReplicasFn, + ModeFn: r.modeFn, + UsesTLSFn: r.usesTLSFn, + RoleResourceLimitsFn: r.roleResourceFn(api.ResourceLimits), + RoleResourceRequestsFn: r.roleResourceFn(api.ResourceRequests), + } +} + +func (r Memcached) roleReplicasFn(obj map[string]interface{}) (api.ReplicaList, error) { + replicas, found, err := unstructured.NestedInt64(obj, "spec", "replicas") + if err != nil { + return nil, fmt.Errorf("failed to read spec.replicas %v: %w", obj, err) + } + if !found { + return api.ReplicaList{api.PodRoleDefault: 1}, nil + } + return api.ReplicaList{api.PodRoleDefault: replicas}, nil +} + +func (r Memcached) modeFn(obj map[string]interface{}) (string, error) { + replicas, _, err := unstructured.NestedInt64(obj, "spec", "replicas") + if err != nil { + return "", err + } + if replicas > 1 { + return DBModeCluster, nil + } + return DBModeStandalone, nil +} + +func (r Memcached) usesTLSFn(obj map[string]interface{}) (bool, error) { + _, found, err := unstructured.NestedFieldNoCopy(obj, "spec", "tls") + return found, err +} + +func (r Memcached) roleResourceFn(fn func(rr core.ResourceRequirements) core.ResourceList) func(obj map[string]interface{}) (map[api.PodRole]api.PodInfo, error) { + return func(obj map[string]interface{}) (map[api.PodRole]api.PodInfo, error) { + container, replicas, err := api.AppNodeResourcesV2(obj, fn, MemcachedContainerName, "spec") + if err != nil { + return nil, err + } + + exporter, err := api.ContainerResources(obj, fn, "spec", "monitor", "prometheus", "exporter") + if err != nil { + return nil, err + } + return map[api.PodRole]api.PodInfo{ + api.PodRoleDefault: {Resource: container, Replicas: replicas}, + api.PodRoleExporter: {Resource: exporter, Replicas: replicas}, + }, nil + } +} diff --git a/vendor/kmodules.xyz/resource-metrics/kubedb.com/v1/mongodb.go b/vendor/kmodules.xyz/resource-metrics/kubedb.com/v1/mongodb.go new file mode 100644 index 0000000000..49804a5d78 --- /dev/null +++ b/vendor/kmodules.xyz/resource-metrics/kubedb.com/v1/mongodb.go @@ -0,0 +1,171 @@ +/* +Copyright AppsCode Inc. and Contributors + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + "fmt" + + "kmodules.xyz/resource-metrics/api" + + core "k8s.io/api/core/v1" + "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" + "k8s.io/apimachinery/pkg/runtime/schema" +) + +func init() { + api.Register(schema.GroupVersionKind{ + Group: "kubedb.com", + Version: "v1", + Kind: "MongoDB", + }, MongoDB{}.ResourceCalculator()) +} + +type MongoDB struct{} + +func (r MongoDB) ResourceCalculator() api.ResourceCalculator { + return &api.ResourceCalculatorFuncs{ + AppRoles: []api.PodRole{api.PodRoleDefault, api.PodRoleTotalShard, api.PodRoleConfigServer, api.PodRoleMongos}, + RuntimeRoles: []api.PodRole{api.PodRoleDefault, api.PodRoleTotalShard, api.PodRoleConfigServer, api.PodRoleMongos, api.PodRoleExporter}, + RoleReplicasFn: r.roleReplicasFn, + ModeFn: r.modeFn, + UsesTLSFn: r.usesTLSFn, + RoleResourceLimitsFn: r.roleResourceFn(api.ResourceLimits), + RoleResourceRequestsFn: r.roleResourceFn(api.ResourceRequests), + } +} + +func (r MongoDB) roleReplicasFn(obj map[string]interface{}) (api.ReplicaList, error) { + // Sharded MongoDB cluster + shardTopology, found, err := unstructured.NestedMap(obj, "spec", "shardTopology") + if err != nil { + return nil, err + } + if found && shardTopology != nil { + shards, _, err := unstructured.NestedInt64(shardTopology, "shard", "shards") + if err != nil { + return nil, err + } + shardReplicas, _, err := unstructured.NestedInt64(shardTopology, "shard", "replicas") + if err != nil { + return nil, err + } + configServerReplicas, _, err := unstructured.NestedInt64(shardTopology, "configServer", "replicas") + if err != nil { + return nil, err + } + mongosReplicas, _, err := unstructured.NestedInt64(shardTopology, "mongos", "replicas") + if err != nil { + return nil, err + } + return api.ReplicaList{ + api.PodRoleTotalShard: shards * shardReplicas, + api.PodRoleShard: shards, + api.PodRoleReplicasPerShard: shardReplicas, + api.PodRoleConfigServer: configServerReplicas, + api.PodRoleMongos: mongosReplicas, + }, nil + } + + // MongoDB ReplicaSet or Standalone + replicas, found, err := unstructured.NestedInt64(obj, "spec", "replicas") + if err != nil { + return nil, fmt.Errorf("failed to read spec.replicas %v: %w", obj, err) + } + if !found { + return api.ReplicaList{api.PodRoleDefault: 1}, nil + } + return api.ReplicaList{api.PodRoleDefault: replicas}, nil +} + +func (r MongoDB) modeFn(obj map[string]interface{}) (string, error) { + shards, found, err := unstructured.NestedMap(obj, "spec", "shardTopology") + if err != nil { + return "", err + } + if found && shards != nil { + return DBModeSharded, nil + } + rs, found, err := unstructured.NestedMap(obj, "spec", "replicaSet") + if err != nil { + return "", err + } + if found && rs != nil { + return DBModeReplicaSet, nil + } + return DBModeStandalone, nil +} + +func (r MongoDB) usesTLSFn(obj map[string]interface{}) (bool, error) { + _, found, err := unstructured.NestedFieldNoCopy(obj, "spec", "tls") + return found, err +} + +func (r MongoDB) roleResourceFn(fn func(rr core.ResourceRequirements) core.ResourceList) func(obj map[string]interface{}) (map[api.PodRole]api.PodInfo, error) { + return func(obj map[string]interface{}) (map[api.PodRole]api.PodInfo, error) { + exporter, err := api.ContainerResources(obj, fn, "spec", "monitor", "prometheus", "exporter") + if err != nil { + return nil, err + } + + // Sharded MongoDB + shardTopology, found, err := unstructured.NestedMap(obj, "spec", "shardTopology") + if err != nil { + return nil, err + } + if found && shardTopology != nil { + // Shard nodes resources + shards, _, err := unstructured.NestedInt64(shardTopology, "shard", "shards") + if err != nil { + return nil, err + } + shard, shardReplicas, err := api.AppNodeResourcesV2(shardTopology, fn, MongoDBContainerName, "shard") + if err != nil { + return nil, err + } + + // ConfigServer nodes resources + configServer, configServerReplicas, err := api.AppNodeResourcesV2(shardTopology, fn, MongoDBContainerName, "configServer") + if err != nil { + return nil, err + } + + // Mongos node resources + mongos, mongosReplicas, err := api.AppNodeResourcesV2(shardTopology, fn, MongoDBContainerName, "mongos") + if err != nil { + return nil, err + } + + return map[api.PodRole]api.PodInfo{ + api.PodRoleTotalShard: {Resource: shard, Replicas: shards * shardReplicas}, + api.PodRoleConfigServer: {Resource: configServer, Replicas: configServerReplicas}, + api.PodRoleMongos: {Resource: mongos, Replicas: mongosReplicas}, + api.PodRoleExporter: {Resource: exporter, Replicas: shards*shardReplicas + configServerReplicas + mongosReplicas}, + }, nil + } + + // MongoDB ReplicaSet or Standalone + container, replicas, err := api.AppNodeResourcesV2(obj, fn, MongoDBContainerName, "spec") + if err != nil { + return nil, err + } + + return map[api.PodRole]api.PodInfo{ + api.PodRoleDefault: {Resource: container, Replicas: replicas}, + api.PodRoleExporter: {Resource: exporter, Replicas: replicas}, + }, nil + } +} diff --git a/vendor/kmodules.xyz/resource-metrics/kubedb.com/v1/mysql.go b/vendor/kmodules.xyz/resource-metrics/kubedb.com/v1/mysql.go new file mode 100644 index 0000000000..c43953c523 --- /dev/null +++ b/vendor/kmodules.xyz/resource-metrics/kubedb.com/v1/mysql.go @@ -0,0 +1,132 @@ +/* +Copyright AppsCode Inc. and Contributors + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + "fmt" + + "kmodules.xyz/resource-metrics/api" + + core "k8s.io/api/core/v1" + "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" + "k8s.io/apimachinery/pkg/runtime/schema" +) + +func init() { + api.Register(schema.GroupVersionKind{ + Group: "kubedb.com", + Version: "v1", + Kind: "MySQL", + }, MySQL{}.ResourceCalculator()) +} + +type MySQL struct{} + +func (r MySQL) ResourceCalculator() api.ResourceCalculator { + return &api.ResourceCalculatorFuncs{ + AppRoles: []api.PodRole{api.PodRoleDefault, api.PodRoleRouter}, + RuntimeRoles: []api.PodRole{api.PodRoleDefault, api.PodRoleExporter, api.PodRoleRouter}, + RoleReplicasFn: r.roleReplicasFn, + ModeFn: r.modeFn, + UsesTLSFn: r.usesTLSFn, + RoleResourceLimitsFn: r.roleResourceFn(api.ResourceLimits), + RoleResourceRequestsFn: r.roleResourceFn(api.ResourceRequests), + } +} + +func (r MySQL) roleReplicasFn(obj map[string]interface{}) (api.ReplicaList, error) { + result := api.ReplicaList{} + + // Standalone or GroupReplication Mode + replicas, found, err := unstructured.NestedInt64(obj, "spec", "replicas") + if err != nil { + return nil, fmt.Errorf("failed to read spec.replicas %v: %w", obj, err) + } + if !found { + result[api.PodRoleDefault] = 1 + } else { + result[api.PodRoleDefault] = replicas + } + + // InnoDB Router + mode, found, err := unstructured.NestedString(obj, "spec", "topology", "mode") + if err != nil { + return nil, err + } + if found && mode == "InnoDBCluster" { + replicas, found, err := unstructured.NestedInt64(obj, "spec", "topology", "innoDBCluster", "router", "replicas") + if err != nil { + return nil, err + } + if !found { + result[api.PodRoleRouter] = 1 + } else { + result[api.PodRoleRouter] = replicas + } + } + + return result, nil +} + +func (r MySQL) modeFn(obj map[string]interface{}) (string, error) { + mode, found, err := unstructured.NestedString(obj, "spec", "topology", "mode") + if err != nil { + return "", err + } + if found { + return mode, nil + } + return DBModeStandalone, nil +} + +func (r MySQL) usesTLSFn(obj map[string]interface{}) (bool, error) { + _, found, err := unstructured.NestedFieldNoCopy(obj, "spec", "tls") + return found, err +} + +func (r MySQL) roleResourceFn(fn func(rr core.ResourceRequirements) core.ResourceList) func(obj map[string]interface{}) (map[api.PodRole]api.PodInfo, error) { + return func(obj map[string]interface{}) (map[api.PodRole]api.PodInfo, error) { + container, replicas, err := api.AppNodeResourcesV2(obj, fn, MySQLContainerName, "spec") + if err != nil { + return nil, err + } + + exporter, err := api.ContainerResources(obj, fn, "spec", "monitor", "prometheus", "exporter") + if err != nil { + return nil, err + } + + result := map[api.PodRole]api.PodInfo{ + api.PodRoleDefault: {Resource: container, Replicas: replicas}, + api.PodRoleExporter: {Resource: exporter, Replicas: replicas}, + } + + // InnoDB Router + mode, found, err := unstructured.NestedString(obj, "spec", "topology", "mode") + if err != nil { + return nil, err + } + if found && mode == "InnoDBCluster" { + router, replicas, err := api.AppNodeResourcesV2(obj, fn, MySQLRouterContainerName, "spec", "topology", "innoDBCluster", "router") + if err != nil { + return nil, err + } + result[api.PodRoleRouter] = api.PodInfo{Resource: router, Replicas: replicas} + } + return result, nil + } +} diff --git a/vendor/kmodules.xyz/resource-metrics/kubedb.com/v1/perconaxtradb.go b/vendor/kmodules.xyz/resource-metrics/kubedb.com/v1/perconaxtradb.go new file mode 100644 index 0000000000..9bd6f20727 --- /dev/null +++ b/vendor/kmodules.xyz/resource-metrics/kubedb.com/v1/perconaxtradb.go @@ -0,0 +1,94 @@ +/* +Copyright AppsCode Inc. and Contributors + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + "fmt" + + "kmodules.xyz/resource-metrics/api" + + core "k8s.io/api/core/v1" + "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" + "k8s.io/apimachinery/pkg/runtime/schema" +) + +func init() { + api.Register(schema.GroupVersionKind{ + Group: "kubedb.com", + Version: "v1", + Kind: "PerconaXtraDB", + }, PerconaXtraDB{}.ResourceCalculator()) +} + +type PerconaXtraDB struct{} + +func (r PerconaXtraDB) ResourceCalculator() api.ResourceCalculator { + return &api.ResourceCalculatorFuncs{ + AppRoles: []api.PodRole{api.PodRoleDefault}, + RuntimeRoles: []api.PodRole{api.PodRoleDefault, api.PodRoleExporter}, + RoleReplicasFn: r.roleReplicasFn, + ModeFn: r.modeFn, + UsesTLSFn: r.usesTLSFn, + RoleResourceLimitsFn: r.roleResourceFn(api.ResourceLimits), + RoleResourceRequestsFn: r.roleResourceFn(api.ResourceRequests), + } +} + +func (r PerconaXtraDB) roleReplicasFn(obj map[string]interface{}) (api.ReplicaList, error) { + replicas, found, err := unstructured.NestedInt64(obj, "spec", "replicas") + if err != nil { + return nil, fmt.Errorf("failed to read spec.replicas %v: %w", obj, err) + } + if !found { + return api.ReplicaList{api.PodRoleDefault: 1}, nil + } + return api.ReplicaList{api.PodRoleDefault: replicas}, nil +} + +func (r PerconaXtraDB) modeFn(obj map[string]interface{}) (string, error) { + replicas, _, err := unstructured.NestedInt64(obj, "spec", "replicas") + if err != nil { + return "", err + } + if replicas > 1 { + return DBModeCluster, nil + } + return DBModeStandalone, nil +} + +func (r PerconaXtraDB) usesTLSFn(obj map[string]interface{}) (bool, error) { + _, found, err := unstructured.NestedFieldNoCopy(obj, "spec", "tls") + return found, err +} + +func (r PerconaXtraDB) roleResourceFn(fn func(rr core.ResourceRequirements) core.ResourceList) func(obj map[string]interface{}) (map[api.PodRole]api.PodInfo, error) { + return func(obj map[string]interface{}) (map[api.PodRole]api.PodInfo, error) { + container, replicas, err := api.AppNodeResourcesV2(obj, fn, PerconaXtraDBContainerName, "spec") + if err != nil { + return nil, err + } + + exporter, err := api.ContainerResources(obj, fn, "spec", "monitor", "prometheus", "exporter") + if err != nil { + return nil, err + } + return map[api.PodRole]api.PodInfo{ + api.PodRoleDefault: {Resource: container, Replicas: replicas}, + api.PodRoleExporter: {Resource: exporter, Replicas: replicas}, + }, nil + } +} diff --git a/vendor/kmodules.xyz/resource-metrics/kubedb.com/v1/pgbouncer.go b/vendor/kmodules.xyz/resource-metrics/kubedb.com/v1/pgbouncer.go new file mode 100644 index 0000000000..ca53c2f824 --- /dev/null +++ b/vendor/kmodules.xyz/resource-metrics/kubedb.com/v1/pgbouncer.go @@ -0,0 +1,94 @@ +/* +Copyright AppsCode Inc. and Contributors + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + "fmt" + + "kmodules.xyz/resource-metrics/api" + + core "k8s.io/api/core/v1" + "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" + "k8s.io/apimachinery/pkg/runtime/schema" +) + +func init() { + api.Register(schema.GroupVersionKind{ + Group: "kubedb.com", + Version: "v1", + Kind: "PgBouncer", + }, PgBouncer{}.ResourceCalculator()) +} + +type PgBouncer struct{} + +func (r PgBouncer) ResourceCalculator() api.ResourceCalculator { + return &api.ResourceCalculatorFuncs{ + AppRoles: []api.PodRole{api.PodRoleDefault}, + RuntimeRoles: []api.PodRole{api.PodRoleDefault, api.PodRoleExporter}, + RoleReplicasFn: r.roleReplicasFn, + ModeFn: r.modeFn, + UsesTLSFn: r.usesTLSFn, + RoleResourceLimitsFn: r.roleResourceFn(api.ResourceLimits), + RoleResourceRequestsFn: r.roleResourceFn(api.ResourceRequests), + } +} + +func (r PgBouncer) roleReplicasFn(obj map[string]interface{}) (api.ReplicaList, error) { + replicas, found, err := unstructured.NestedInt64(obj, "spec", "replicas") + if err != nil { + return nil, fmt.Errorf("failed to read spec.replicas %v: %w", obj, err) + } + if !found { + return api.ReplicaList{api.PodRoleDefault: 1}, nil + } + return api.ReplicaList{api.PodRoleDefault: replicas}, nil +} + +func (r PgBouncer) modeFn(obj map[string]interface{}) (string, error) { + replicas, _, err := unstructured.NestedInt64(obj, "spec", "replicas") + if err != nil { + return "", err + } + if replicas > 1 { + return DBModeCluster, nil + } + return DBModeStandalone, nil +} + +func (r PgBouncer) usesTLSFn(obj map[string]interface{}) (bool, error) { + _, found, err := unstructured.NestedFieldNoCopy(obj, "spec", "tls") + return found, err +} + +func (r PgBouncer) roleResourceFn(fn func(rr core.ResourceRequirements) core.ResourceList) func(obj map[string]interface{}) (map[api.PodRole]api.PodInfo, error) { + return func(obj map[string]interface{}) (map[api.PodRole]api.PodInfo, error) { + container, replicas, err := api.AppNodeResourcesV2(obj, fn, PgBouncerContainerName, "spec") + if err != nil { + return nil, err + } + + exporter, err := api.ContainerResources(obj, fn, "spec", "monitor", "prometheus", "exporter") + if err != nil { + return nil, err + } + return map[api.PodRole]api.PodInfo{ + api.PodRoleDefault: {Resource: container, Replicas: replicas}, + api.PodRoleExporter: {Resource: exporter, Replicas: replicas}, + }, nil + } +} diff --git a/vendor/kmodules.xyz/resource-metrics/kubedb.com/v1/postgres.go b/vendor/kmodules.xyz/resource-metrics/kubedb.com/v1/postgres.go new file mode 100644 index 0000000000..664883d30f --- /dev/null +++ b/vendor/kmodules.xyz/resource-metrics/kubedb.com/v1/postgres.go @@ -0,0 +1,95 @@ +/* +Copyright AppsCode Inc. and Contributors + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + "fmt" + + "kmodules.xyz/resource-metrics/api" + + core "k8s.io/api/core/v1" + "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" + "k8s.io/apimachinery/pkg/runtime/schema" +) + +func init() { + api.Register(schema.GroupVersionKind{ + Group: "kubedb.com", + Version: "v1", + Kind: "Postgres", + }, Postgres{}.ResourceCalculator()) +} + +type Postgres struct{} + +func (r Postgres) ResourceCalculator() api.ResourceCalculator { + return &api.ResourceCalculatorFuncs{ + AppRoles: []api.PodRole{api.PodRoleDefault}, + RuntimeRoles: []api.PodRole{api.PodRoleDefault, api.PodRoleExporter}, + RoleReplicasFn: r.roleReplicasFn, + ModeFn: r.modeFn, + UsesTLSFn: r.usesTLSFn, + RoleResourceLimitsFn: r.roleResourceFn(api.ResourceLimits), + RoleResourceRequestsFn: r.roleResourceFn(api.ResourceRequests), + } +} + +func (r Postgres) roleReplicasFn(obj map[string]interface{}) (api.ReplicaList, error) { + v, found, err := unstructured.NestedInt64(obj, "spec", "replicas") + if err != nil { + return nil, fmt.Errorf("failed to read spec.replicas %v: %w", obj, err) + } + if !found { + return api.ReplicaList{api.PodRoleDefault: 1}, nil + } + return api.ReplicaList{api.PodRoleDefault: v}, nil +} + +func (r Postgres) modeFn(obj map[string]interface{}) (string, error) { + mode, found, err := unstructured.NestedString(obj, "spec", "mode") + if err == nil && found { + return mode, nil + } + replicas, found, err := unstructured.NestedInt64(obj, "spec", "replicas") + if err == nil && found && replicas > 1 { + return DBModeCluster, nil + } + return DBModeStandalone, nil +} + +func (r Postgres) usesTLSFn(obj map[string]interface{}) (bool, error) { + _, found, err := unstructured.NestedFieldNoCopy(obj, "spec", "tls") + return found, err +} + +func (r Postgres) roleResourceFn(fn func(rr core.ResourceRequirements) core.ResourceList) func(obj map[string]interface{}) (map[api.PodRole]api.PodInfo, error) { + return func(obj map[string]interface{}) (map[api.PodRole]api.PodInfo, error) { + container, replicas, err := api.AppNodeResourcesV2(obj, fn, PostgresContainerName, "spec") + if err != nil { + return nil, err + } + + exporter, err := api.ContainerResources(obj, fn, "spec", "monitor", "prometheus", "exporter") + if err != nil { + return nil, err + } + return map[api.PodRole]api.PodInfo{ + api.PodRoleDefault: {Resource: container, Replicas: replicas}, + api.PodRoleExporter: {Resource: exporter, Replicas: replicas}, + }, nil + } +} diff --git a/vendor/kmodules.xyz/resource-metrics/kubedb.com/v1/proxysql.go b/vendor/kmodules.xyz/resource-metrics/kubedb.com/v1/proxysql.go new file mode 100644 index 0000000000..12b635120b --- /dev/null +++ b/vendor/kmodules.xyz/resource-metrics/kubedb.com/v1/proxysql.go @@ -0,0 +1,94 @@ +/* +Copyright AppsCode Inc. and Contributors + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + "fmt" + + "kmodules.xyz/resource-metrics/api" + + core "k8s.io/api/core/v1" + "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" + "k8s.io/apimachinery/pkg/runtime/schema" +) + +func init() { + api.Register(schema.GroupVersionKind{ + Group: "kubedb.com", + Version: "v1", + Kind: "ProxySQL", + }, ProxySQL{}.ResourceCalculator()) +} + +type ProxySQL struct{} + +func (r ProxySQL) ResourceCalculator() api.ResourceCalculator { + return &api.ResourceCalculatorFuncs{ + AppRoles: []api.PodRole{api.PodRoleDefault}, + RuntimeRoles: []api.PodRole{api.PodRoleDefault, api.PodRoleExporter}, + RoleReplicasFn: r.roleReplicasFn, + ModeFn: r.modeFn, + UsesTLSFn: r.usesTLSFn, + RoleResourceLimitsFn: r.roleResourceFn(api.ResourceLimits), + RoleResourceRequestsFn: r.roleResourceFn(api.ResourceRequests), + } +} + +func (r ProxySQL) roleReplicasFn(obj map[string]interface{}) (api.ReplicaList, error) { + replicas, found, err := unstructured.NestedInt64(obj, "spec", "replicas") + if err != nil { + return nil, fmt.Errorf("failed to read spec.replicas %v: %w", obj, err) + } + if !found { + return api.ReplicaList{api.PodRoleDefault: 1}, nil + } + return api.ReplicaList{api.PodRoleDefault: replicas}, nil +} + +func (r ProxySQL) modeFn(obj map[string]interface{}) (string, error) { + replicas, _, err := unstructured.NestedInt64(obj, "spec", "replicas") + if err != nil { + return "", err + } + if replicas > 1 { + return DBModeCluster, nil + } + return DBModeStandalone, nil +} + +func (r ProxySQL) usesTLSFn(obj map[string]interface{}) (bool, error) { + _, found, err := unstructured.NestedFieldNoCopy(obj, "spec", "tls") + return found, err +} + +func (r ProxySQL) roleResourceFn(fn func(rr core.ResourceRequirements) core.ResourceList) func(obj map[string]interface{}) (map[api.PodRole]api.PodInfo, error) { + return func(obj map[string]interface{}) (map[api.PodRole]api.PodInfo, error) { + container, replicas, err := api.AppNodeResourcesV2(obj, fn, ProxySQLContainerName, "spec") + if err != nil { + return nil, err + } + + exporter, err := api.ContainerResources(obj, fn, "spec", "monitor", "prometheus", "exporter") + if err != nil { + return nil, err + } + return map[api.PodRole]api.PodInfo{ + api.PodRoleDefault: {Resource: container, Replicas: replicas}, + api.PodRoleExporter: {Resource: exporter, Replicas: replicas}, + }, nil + } +} diff --git a/vendor/kmodules.xyz/resource-metrics/kubedb.com/v1/redis.go b/vendor/kmodules.xyz/resource-metrics/kubedb.com/v1/redis.go new file mode 100644 index 0000000000..807830faaa --- /dev/null +++ b/vendor/kmodules.xyz/resource-metrics/kubedb.com/v1/redis.go @@ -0,0 +1,137 @@ +/* +Copyright AppsCode Inc. and Contributors + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + "fmt" + + "kmodules.xyz/resource-metrics/api" + + core "k8s.io/api/core/v1" + "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" + "k8s.io/apimachinery/pkg/runtime/schema" +) + +func init() { + api.Register(schema.GroupVersionKind{ + Group: "kubedb.com", + Version: "v1", + Kind: "Redis", + }, Redis{}.ResourceCalculator()) +} + +type Redis struct{} + +func (r Redis) ResourceCalculator() api.ResourceCalculator { + return &api.ResourceCalculatorFuncs{ + AppRoles: []api.PodRole{api.PodRoleDefault}, + RuntimeRoles: []api.PodRole{api.PodRoleDefault, api.PodRoleExporter}, + RoleReplicasFn: r.roleReplicasFn, + ModeFn: r.modeFn, + UsesTLSFn: r.usesTLSFn, + RoleResourceLimitsFn: r.roleResourceFn(api.ResourceLimits), + RoleResourceRequestsFn: r.roleResourceFn(api.ResourceRequests), + } +} + +func (r Redis) roleReplicasFn(obj map[string]interface{}) (api.ReplicaList, error) { + mode, found, err := unstructured.NestedString(obj, "spec", "mode") + if err != nil { + return nil, err + } + if found && mode == DBModeCluster { + shards, _, err := unstructured.NestedInt64(obj, "spec", "cluster", "master") + if err != nil { + return nil, err + } + shardReplicas, _, err := unstructured.NestedInt64(obj, "spec", "cluster", "replicas") + if err != nil { + return nil, err + } + return api.ReplicaList{ + api.PodRoleTotalShard: shards * shardReplicas, + api.PodRoleDefault: shards * shardReplicas, + api.PodRoleShard: shards, + api.PodRoleReplicasPerShard: shardReplicas, + }, nil + } + + // Standalone or sentinel + replicas, found, err := unstructured.NestedInt64(obj, "spec", "replicas") + if err != nil { + return nil, fmt.Errorf("failed to read spec.replicas %v: %w", obj, err) + } + if !found { + return api.ReplicaList{api.PodRoleDefault: 1}, nil + } + return api.ReplicaList{api.PodRoleDefault: replicas}, nil +} + +func (r Redis) modeFn(obj map[string]interface{}) (string, error) { + mode, found, err := unstructured.NestedString(obj, "spec", "mode") + if err != nil { + return "", err + } + if found { + return mode, nil + } + return DBModeStandalone, nil +} + +func (r Redis) usesTLSFn(obj map[string]interface{}) (bool, error) { + _, found, err := unstructured.NestedFieldNoCopy(obj, "spec", "tls") + return found, err +} + +func (r Redis) roleResourceFn(fn func(rr core.ResourceRequirements) core.ResourceList) func(obj map[string]interface{}) (map[api.PodRole]api.PodInfo, error) { + return func(obj map[string]interface{}) (map[api.PodRole]api.PodInfo, error) { + exporter, err := api.ContainerResources(obj, fn, "spec", "monitor", "prometheus", "exporter") + if err != nil { + return nil, err + } + + // Redis Sentinel or Standalone + container, replicas, err := api.AppNodeResourcesV2(obj, fn, RedisContainerName, "spec") + if err != nil { + return nil, err + } + + mode, found, err := unstructured.NestedString(obj, "spec", "mode") + if err != nil { + return nil, err + } + if found && mode == DBModeCluster { + shards, _, err := unstructured.NestedInt64(obj, "spec", "cluster", "shards") + if err != nil { + return nil, err + } + shardReplicas, _, err := unstructured.NestedInt64(obj, "spec", "cluster", "replicas") + if err != nil { + return nil, err + } + // If spec.cluster.replicas = x + // That means in each shard there are (x+1) redis replicas + shardReplicas += 1 + replicas = shards * shardReplicas + } + + return map[api.PodRole]api.PodInfo{ + api.PodRoleDefault: {Resource: container, Replicas: replicas}, + api.PodRoleExporter: {Resource: exporter, Replicas: replicas}, + }, nil + } +} diff --git a/vendor/kmodules.xyz/resource-metrics/kubedb.com/v1/redissentinel.go b/vendor/kmodules.xyz/resource-metrics/kubedb.com/v1/redissentinel.go new file mode 100644 index 0000000000..a12c97336b --- /dev/null +++ b/vendor/kmodules.xyz/resource-metrics/kubedb.com/v1/redissentinel.go @@ -0,0 +1,82 @@ +/* +Copyright AppsCode Inc. and Contributors + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + "fmt" + + "kmodules.xyz/resource-metrics/api" + + core "k8s.io/api/core/v1" + "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" + "k8s.io/apimachinery/pkg/runtime/schema" +) + +func init() { + api.Register(schema.GroupVersionKind{ + Group: "kubedb.com", + Version: "v1", + Kind: "RedisSentinel", + }, RedisSentinel{}.ResourceCalculator()) +} + +type RedisSentinel struct{} + +func (r RedisSentinel) ResourceCalculator() api.ResourceCalculator { + return &api.ResourceCalculatorFuncs{ + AppRoles: []api.PodRole{api.PodRoleDefault}, + RuntimeRoles: []api.PodRole{api.PodRoleDefault, api.PodRoleExporter}, + RoleReplicasFn: r.roleReplicasFn, + ModeFn: r.modeFn, + RoleResourceLimitsFn: r.roleResourceFn(api.ResourceLimits), + RoleResourceRequestsFn: r.roleResourceFn(api.ResourceRequests), + } +} + +func (r RedisSentinel) roleReplicasFn(obj map[string]interface{}) (api.ReplicaList, error) { + replicas, found, err := unstructured.NestedInt64(obj, "spec", "replicas") + if err != nil { + return nil, fmt.Errorf("failed to read spec.replicas %v: %w", obj, err) + } + if !found { + return api.ReplicaList{api.PodRoleDefault: 1}, nil + } + return api.ReplicaList{api.PodRoleDefault: replicas}, nil +} + +func (r RedisSentinel) modeFn(obj map[string]interface{}) (string, error) { + return DBModeCluster, nil +} + +func (r RedisSentinel) roleResourceFn(fn func(rr core.ResourceRequirements) core.ResourceList) func(obj map[string]interface{}) (map[api.PodRole]api.PodInfo, error) { + return func(obj map[string]interface{}) (map[api.PodRole]api.PodInfo, error) { + exporter, err := api.ContainerResources(obj, fn, "spec", "monitor", "prometheus", "exporter") + if err != nil { + return nil, err + } + + container, replicas, err := api.AppNodeResourcesV2(obj, fn, RedisSentinelContainerName, "spec") + if err != nil { + return nil, err + } + + return map[api.PodRole]api.PodInfo{ + api.PodRoleDefault: {Resource: container, Replicas: replicas}, + api.PodRoleExporter: {Resource: exporter, Replicas: replicas}, + }, nil + } +} diff --git a/vendor/kmodules.xyz/resource-metrics/kubedb.com/v1alpha2/druid.go b/vendor/kmodules.xyz/resource-metrics/kubedb.com/v1alpha2/druid.go index 4b0c9be39e..182ce50c65 100644 --- a/vendor/kmodules.xyz/resource-metrics/kubedb.com/v1alpha2/druid.go +++ b/vendor/kmodules.xyz/resource-metrics/kubedb.com/v1alpha2/druid.go @@ -39,8 +39,8 @@ type Druid struct{} func (r Druid) ResourceCalculator() api.ResourceCalculator { return &api.ResourceCalculatorFuncs{ - AppRoles: []api.PodRole{api.PodRoleDefault}, - RuntimeRoles: []api.PodRole{api.PodRoleDefault, api.PodRoleExporter}, + AppRoles: []api.PodRole{api.PodRoleDefault, api.PodRoleCoordinators, api.PodRoleBrokers, api.PodRoleOverlords, api.PodRoleMiddleManagers, api.PodRoleHistoricals, api.PodRoleRouters}, + RuntimeRoles: []api.PodRole{api.PodRoleDefault, api.PodRoleCoordinators, api.PodRoleBrokers, api.PodRoleOverlords, api.PodRoleMiddleManagers, api.PodRoleHistoricals, api.PodRoleRouters, api.PodRoleExporter}, RoleReplicasFn: r.roleReplicasFn, ModeFn: r.modeFn, UsesTLSFn: r.usesTLSFn, @@ -58,7 +58,6 @@ func (r Druid) roleReplicasFn(obj map[string]interface{}) (api.ReplicaList, erro } if found && topology != nil { - var replicas int64 = 0 for role, roleSpec := range topology { roleReplicas, found, err := unstructured.NestedInt64(roleSpec.(map[string]interface{}), "replicas") if err != nil { @@ -66,10 +65,8 @@ func (r Druid) roleReplicasFn(obj map[string]interface{}) (api.ReplicaList, erro } if found { result[api.PodRole(role)] = roleReplicas - replicas += roleReplicas } } - result[api.PodRoleDefault] = replicas } else { // Combined mode replicas, found, err := unstructured.NestedInt64(obj, "spec", "replicas") @@ -82,7 +79,6 @@ func (r Druid) roleReplicasFn(obj map[string]interface{}) (api.ReplicaList, erro result[api.PodRoleDefault] = replicas } } - return result, nil } @@ -102,8 +98,8 @@ func (r Druid) usesTLSFn(obj map[string]interface{}) (bool, error) { return found, err } -func (r Druid) roleResourceFn(fn func(rr core.ResourceRequirements) core.ResourceList) func(obj map[string]interface{}) (map[api.PodRole]core.ResourceList, error) { - return func(obj map[string]interface{}) (map[api.PodRole]core.ResourceList, error) { +func (r Druid) roleResourceFn(fn func(rr core.ResourceRequirements) core.ResourceList) func(obj map[string]interface{}) (map[api.PodRole]api.PodInfo, error) { + return func(obj map[string]interface{}) (map[api.PodRole]api.PodInfo, error) { exporter, err := api.ContainerResources(obj, fn, "spec", "monitor", "prometheus", "exporter") if err != nil { return nil, err @@ -113,10 +109,9 @@ func (r Druid) roleResourceFn(fn func(rr core.ResourceRequirements) core.Resourc if err != nil { return nil, err } + result := map[api.PodRole]api.PodInfo{} if found && topology != nil { var replicas int64 = 0 - var totalResources core.ResourceList - result := map[api.PodRole]core.ResourceList{} for role, roleSpec := range topology { rolePerReplicaResources, roleReplicas, err := api.AppNodeResourcesV2(roleSpec.(map[string]interface{}), fn, DruidContainerName) @@ -124,16 +119,28 @@ func (r Druid) roleResourceFn(fn func(rr core.ResourceRequirements) core.Resourc return nil, err } - roleResources := api.MulResourceList(rolePerReplicaResources, roleReplicas) - result[api.PodRole(role)] = roleResources - totalResources = api.AddResourceList(totalResources, roleResources) + result[api.PodRole(role)] = api.PodInfo{ + Resource: rolePerReplicaResources, + Replicas: roleReplicas, + } + + replicas += roleReplicas } - result[api.PodRoleDefault] = totalResources - result[api.PodRoleExporter] = api.MulResourceList(exporter, replicas) + result[api.PodRoleExporter] = api.PodInfo{ + Resource: exporter, + Replicas: replicas, + } return result, nil } + container, replicas, err := api.AppNodeResourcesV2(obj, fn, DruidContainerName, "spec") + if err != nil { + return nil, err + } - return nil, nil + return map[api.PodRole]api.PodInfo{ + api.PodRoleDefault: {Resource: container, Replicas: replicas}, + api.PodRoleExporter: {Resource: exporter, Replicas: replicas}, + }, nil } } diff --git a/vendor/kmodules.xyz/resource-metrics/kubedb.com/v1alpha2/elasticsearch.go b/vendor/kmodules.xyz/resource-metrics/kubedb.com/v1alpha2/elasticsearch.go index 3236189745..4bbaa40a0f 100644 --- a/vendor/kmodules.xyz/resource-metrics/kubedb.com/v1alpha2/elasticsearch.go +++ b/vendor/kmodules.xyz/resource-metrics/kubedb.com/v1alpha2/elasticsearch.go @@ -41,8 +41,8 @@ type Elasticsearch struct{} func (r Elasticsearch) ResourceCalculator() api.ResourceCalculator { return &api.ResourceCalculatorFuncs{ - AppRoles: []api.PodRole{api.PodRoleDefault}, - RuntimeRoles: []api.PodRole{api.PodRoleDefault, api.PodRoleExporter}, + AppRoles: []api.PodRole{api.PodRoleDefault, api.PodRoleMaster, api.PodRoleIngest, api.PodRoleData, api.PodRoleDataContent, api.PodRoleDataCold, api.PodRoleDataHot, api.PodRoleDataWarm, api.PodRoleDataFrozen, api.PodRoleML, api.PodRoleTransform, api.PodRoleCoordinating}, + RuntimeRoles: []api.PodRole{api.PodRoleDefault, api.PodRoleMaster, api.PodRoleIngest, api.PodRoleData, api.PodRoleDataContent, api.PodRoleDataCold, api.PodRoleDataHot, api.PodRoleDataWarm, api.PodRoleDataFrozen, api.PodRoleML, api.PodRoleTransform, api.PodRoleCoordinating, api.PodRoleExporter}, RoleReplicasFn: r.roleReplicasFn, ModeFn: r.modeFn, UsesTLSFn: r.usesTLSFn, @@ -59,7 +59,6 @@ func (r Elasticsearch) roleReplicasFn(obj map[string]interface{}) (api.ReplicaLi return nil, err } if found && topology != nil { - var replicas int64 = 0 for role, roleSpec := range topology { roleReplicas, found, err := unstructured.NestedInt64(roleSpec.(map[string]interface{}), "replicas") if err != nil { @@ -67,10 +66,8 @@ func (r Elasticsearch) roleReplicasFn(obj map[string]interface{}) (api.ReplicaLi } if found { result[api.PodRole(role)] = roleReplicas - replicas += roleReplicas } } - result[api.PodRoleDefault] = replicas } else { // Combined mode replicas, found, err := unstructured.NestedInt64(obj, "spec", "replicas") @@ -102,8 +99,8 @@ func (r Elasticsearch) usesTLSFn(obj map[string]interface{}) (bool, error) { return found, err } -func (r Elasticsearch) roleResourceFn(fn func(rr core.ResourceRequirements) core.ResourceList) func(obj map[string]interface{}) (map[api.PodRole]core.ResourceList, error) { - return func(obj map[string]interface{}) (map[api.PodRole]core.ResourceList, error) { +func (r Elasticsearch) roleResourceFn(fn func(rr core.ResourceRequirements) core.ResourceList) func(obj map[string]interface{}) (map[api.PodRole]api.PodInfo, error) { + return func(obj map[string]interface{}) (map[api.PodRole]api.PodInfo, error) { exporter, err := api.ContainerResources(obj, fn, "spec", "monitor", "prometheus", "exporter") if err != nil { return nil, err @@ -115,22 +112,18 @@ func (r Elasticsearch) roleResourceFn(fn func(rr core.ResourceRequirements) core } if found && topology != nil { var replicas int64 = 0 - var totalResources core.ResourceList - result := map[api.PodRole]core.ResourceList{} + result := map[api.PodRole]api.PodInfo{} for role, roleSpec := range topology { rolePerReplicaResources, roleReplicas, err := ElasticsearchNodeResources(roleSpec.(map[string]interface{}), fn) if err != nil { return nil, err } - - roleResources := api.MulResourceList(rolePerReplicaResources, roleReplicas) - result[api.PodRole(role)] = roleResources - totalResources = api.AddResourceList(totalResources, roleResources) + replicas += roleReplicas + result[api.PodRole(role)] = api.PodInfo{Resource: rolePerReplicaResources, Replicas: roleReplicas} } - result[api.PodRoleDefault] = totalResources - result[api.PodRoleExporter] = api.MulResourceList(exporter, replicas) + result[api.PodRoleExporter] = api.PodInfo{Resource: exporter, Replicas: replicas} return result, nil } @@ -140,9 +133,9 @@ func (r Elasticsearch) roleResourceFn(fn func(rr core.ResourceRequirements) core return nil, err } - return map[api.PodRole]core.ResourceList{ - api.PodRoleDefault: api.MulResourceList(container, replicas), - api.PodRoleExporter: api.MulResourceList(exporter, replicas), + return map[api.PodRole]api.PodInfo{ + api.PodRoleDefault: {Resource: container, Replicas: replicas}, + api.PodRoleExporter: {Resource: exporter, Replicas: replicas}, }, nil } } diff --git a/vendor/kmodules.xyz/resource-metrics/kubedb.com/v1alpha2/ferretdb.go b/vendor/kmodules.xyz/resource-metrics/kubedb.com/v1alpha2/ferretdb.go index c4f877ed48..a3c35548fa 100644 --- a/vendor/kmodules.xyz/resource-metrics/kubedb.com/v1alpha2/ferretdb.go +++ b/vendor/kmodules.xyz/resource-metrics/kubedb.com/v1alpha2/ferretdb.go @@ -75,8 +75,8 @@ func (r FerretDB) usesTLSFn(obj map[string]interface{}) (bool, error) { return found, err } -func (r FerretDB) roleResourceFn(fn func(rr core.ResourceRequirements) core.ResourceList) func(obj map[string]interface{}) (map[api.PodRole]core.ResourceList, error) { - return func(obj map[string]interface{}) (map[api.PodRole]core.ResourceList, error) { +func (r FerretDB) roleResourceFn(fn func(rr core.ResourceRequirements) core.ResourceList) func(obj map[string]interface{}) (map[api.PodRole]api.PodInfo, error) { + return func(obj map[string]interface{}) (map[api.PodRole]api.PodInfo, error) { container, replicas, err := api.AppNodeResourcesV2(obj, fn, FerretDBContainerName, "spec") if err != nil { return nil, err @@ -86,9 +86,9 @@ func (r FerretDB) roleResourceFn(fn func(rr core.ResourceRequirements) core.Reso if err != nil { return nil, err } - return map[api.PodRole]core.ResourceList{ - api.PodRoleDefault: api.MulResourceList(container, replicas), - api.PodRoleExporter: api.MulResourceList(exporter, replicas), + return map[api.PodRole]api.PodInfo{ + api.PodRoleDefault: {Resource: container, Replicas: replicas}, + api.PodRoleExporter: {Resource: exporter, Replicas: replicas}, }, nil } } diff --git a/vendor/kmodules.xyz/resource-metrics/kubedb.com/v1alpha2/kafka.go b/vendor/kmodules.xyz/resource-metrics/kubedb.com/v1alpha2/kafka.go index caa347c7af..cf8aadecdc 100644 --- a/vendor/kmodules.xyz/resource-metrics/kubedb.com/v1alpha2/kafka.go +++ b/vendor/kmodules.xyz/resource-metrics/kubedb.com/v1alpha2/kafka.go @@ -41,8 +41,8 @@ type Kafka struct{} func (r Kafka) ResourceCalculator() api.ResourceCalculator { return &api.ResourceCalculatorFuncs{ - AppRoles: []api.PodRole{api.PodRoleDefault}, - RuntimeRoles: []api.PodRole{api.PodRoleDefault, api.PodRoleExporter}, + AppRoles: []api.PodRole{api.PodRoleDefault, api.PodRoleBroker, api.PodRoleController, api.PodRoleCombined}, + RuntimeRoles: []api.PodRole{api.PodRoleDefault, api.PodRoleBroker, api.PodRoleController, api.PodRoleCombined, api.PodRoleExporter}, RoleReplicasFn: r.roleReplicasFn, ModeFn: r.modeFn, UsesTLSFn: r.usesTLSFn, @@ -60,7 +60,6 @@ func (r Kafka) roleReplicasFn(obj map[string]interface{}) (api.ReplicaList, erro } if found && topology != nil { // dedicated topology mode - var replicas int64 = 0 for role, roleSpec := range topology { roleReplicas, found, err := unstructured.NestedInt64(roleSpec.(map[string]interface{}), "replicas") if err != nil { @@ -68,10 +67,8 @@ func (r Kafka) roleReplicasFn(obj map[string]interface{}) (api.ReplicaList, erro } if found { result[api.PodRole(role)] = roleReplicas - replicas += roleReplicas } } - result[api.PodRoleDefault] = replicas } else { // Combined mode replicas, found, err := unstructured.NestedInt64(obj, "spec", "replicas") @@ -103,8 +100,8 @@ func (r Kafka) usesTLSFn(obj map[string]interface{}) (bool, error) { return found, err } -func (r Kafka) roleResourceFn(fn func(rr core.ResourceRequirements) core.ResourceList) func(obj map[string]interface{}) (map[api.PodRole]core.ResourceList, error) { - return func(obj map[string]interface{}) (map[api.PodRole]core.ResourceList, error) { +func (r Kafka) roleResourceFn(fn func(rr core.ResourceRequirements) core.ResourceList) func(obj map[string]interface{}) (map[api.PodRole]api.PodInfo, error) { + return func(obj map[string]interface{}) (map[api.PodRole]api.PodInfo, error) { exporter, err := api.ContainerResources(obj, fn, "spec", "monitor", "prometheus", "exporter") if err != nil { return nil, err @@ -116,22 +113,18 @@ func (r Kafka) roleResourceFn(fn func(rr core.ResourceRequirements) core.Resourc } if found && topology != nil { var replicas int64 = 0 - var totalResources core.ResourceList - result := map[api.PodRole]core.ResourceList{} + result := map[api.PodRole]api.PodInfo{} for role, roleSpec := range topology { rolePerReplicaResources, roleReplicas, err := KafkaNodeResources(roleSpec.(map[string]interface{}), fn) if err != nil { return nil, err } - - roleResources := api.MulResourceList(rolePerReplicaResources, roleReplicas) - result[api.PodRole(role)] = roleResources - totalResources = api.AddResourceList(totalResources, roleResources) + replicas += roleReplicas + result[api.PodRole(role)] = api.PodInfo{Resource: rolePerReplicaResources, Replicas: roleReplicas} } - result[api.PodRoleDefault] = totalResources - result[api.PodRoleExporter] = api.MulResourceList(exporter, replicas) + result[api.PodRoleExporter] = api.PodInfo{Resource: exporter, Replicas: replicas} return result, nil } @@ -141,9 +134,9 @@ func (r Kafka) roleResourceFn(fn func(rr core.ResourceRequirements) core.Resourc return nil, err } - return map[api.PodRole]core.ResourceList{ - api.PodRoleDefault: api.MulResourceList(container, replicas), - api.PodRoleExporter: api.MulResourceList(exporter, replicas), + return map[api.PodRole]api.PodInfo{ + api.PodRoleDefault: {Resource: container, Replicas: replicas}, + api.PodRoleExporter: {Resource: exporter, Replicas: replicas}, }, nil } } diff --git a/vendor/kmodules.xyz/resource-metrics/kubedb.com/v1alpha2/mariadb.go b/vendor/kmodules.xyz/resource-metrics/kubedb.com/v1alpha2/mariadb.go index 7095e5ac21..0e3a6cef3d 100644 --- a/vendor/kmodules.xyz/resource-metrics/kubedb.com/v1alpha2/mariadb.go +++ b/vendor/kmodules.xyz/resource-metrics/kubedb.com/v1alpha2/mariadb.go @@ -75,8 +75,8 @@ func (r MariaDB) usesTLSFn(obj map[string]interface{}) (bool, error) { return found, err } -func (r MariaDB) roleResourceFn(fn func(rr core.ResourceRequirements) core.ResourceList) func(obj map[string]interface{}) (map[api.PodRole]core.ResourceList, error) { - return func(obj map[string]interface{}) (map[api.PodRole]core.ResourceList, error) { +func (r MariaDB) roleResourceFn(fn func(rr core.ResourceRequirements) core.ResourceList) func(obj map[string]interface{}) (map[api.PodRole]api.PodInfo, error) { + return func(obj map[string]interface{}) (map[api.PodRole]api.PodInfo, error) { container, replicas, err := api.AppNodeResources(obj, fn, "spec") if err != nil { return nil, err @@ -86,9 +86,9 @@ func (r MariaDB) roleResourceFn(fn func(rr core.ResourceRequirements) core.Resou if err != nil { return nil, err } - return map[api.PodRole]core.ResourceList{ - api.PodRoleDefault: api.MulResourceList(container, replicas), - api.PodRoleExporter: api.MulResourceList(exporter, replicas), + return map[api.PodRole]api.PodInfo{ + api.PodRoleDefault: {Resource: container, Replicas: replicas}, + api.PodRoleExporter: {Resource: exporter, Replicas: replicas}, }, nil } } diff --git a/vendor/kmodules.xyz/resource-metrics/kubedb.com/v1alpha2/memcached.go b/vendor/kmodules.xyz/resource-metrics/kubedb.com/v1alpha2/memcached.go index 501569d3b6..a0156ffc9f 100644 --- a/vendor/kmodules.xyz/resource-metrics/kubedb.com/v1alpha2/memcached.go +++ b/vendor/kmodules.xyz/resource-metrics/kubedb.com/v1alpha2/memcached.go @@ -75,8 +75,8 @@ func (r Memcached) usesTLSFn(obj map[string]interface{}) (bool, error) { return found, err } -func (r Memcached) roleResourceFn(fn func(rr core.ResourceRequirements) core.ResourceList) func(obj map[string]interface{}) (map[api.PodRole]core.ResourceList, error) { - return func(obj map[string]interface{}) (map[api.PodRole]core.ResourceList, error) { +func (r Memcached) roleResourceFn(fn func(rr core.ResourceRequirements) core.ResourceList) func(obj map[string]interface{}) (map[api.PodRole]api.PodInfo, error) { + return func(obj map[string]interface{}) (map[api.PodRole]api.PodInfo, error) { container, replicas, err := api.AppNodeResources(obj, fn, "spec") if err != nil { return nil, err @@ -86,9 +86,9 @@ func (r Memcached) roleResourceFn(fn func(rr core.ResourceRequirements) core.Res if err != nil { return nil, err } - return map[api.PodRole]core.ResourceList{ - api.PodRoleDefault: api.MulResourceList(container, replicas), - api.PodRoleExporter: api.MulResourceList(exporter, replicas), + return map[api.PodRole]api.PodInfo{ + api.PodRoleDefault: {Resource: container, Replicas: replicas}, + api.PodRoleExporter: {Resource: exporter, Replicas: replicas}, }, nil } } diff --git a/vendor/kmodules.xyz/resource-metrics/kubedb.com/v1alpha2/mongodb.go b/vendor/kmodules.xyz/resource-metrics/kubedb.com/v1alpha2/mongodb.go index cbac3b80f8..f7789b0458 100644 --- a/vendor/kmodules.xyz/resource-metrics/kubedb.com/v1alpha2/mongodb.go +++ b/vendor/kmodules.xyz/resource-metrics/kubedb.com/v1alpha2/mongodb.go @@ -114,8 +114,8 @@ func (r MongoDB) usesTLSFn(obj map[string]interface{}) (bool, error) { return found, err } -func (r MongoDB) roleResourceFn(fn func(rr core.ResourceRequirements) core.ResourceList) func(obj map[string]interface{}) (map[api.PodRole]core.ResourceList, error) { - return func(obj map[string]interface{}) (map[api.PodRole]core.ResourceList, error) { +func (r MongoDB) roleResourceFn(fn func(rr core.ResourceRequirements) core.ResourceList) func(obj map[string]interface{}) (map[api.PodRole]api.PodInfo, error) { + return func(obj map[string]interface{}) (map[api.PodRole]api.PodInfo, error) { exporter, err := api.ContainerResources(obj, fn, "spec", "monitor", "prometheus", "exporter") if err != nil { return nil, err @@ -149,11 +149,11 @@ func (r MongoDB) roleResourceFn(fn func(rr core.ResourceRequirements) core.Resou return nil, err } - return map[api.PodRole]core.ResourceList{ - api.PodRoleTotalShard: api.MulResourceList(shard, shards*shardReplicas), - api.PodRoleConfigServer: api.MulResourceList(configServer, configServerReplicas), - api.PodRoleMongos: api.MulResourceList(mongos, mongosReplicas), - api.PodRoleExporter: api.MulResourceList(exporter, shards*shardReplicas+configServerReplicas+mongosReplicas), + return map[api.PodRole]api.PodInfo{ + api.PodRoleTotalShard: {Resource: shard, Replicas: shards * shardReplicas}, + api.PodRoleConfigServer: {Resource: configServer, Replicas: configServerReplicas}, + api.PodRoleMongos: {Resource: mongos, Replicas: mongosReplicas}, + api.PodRoleExporter: {Resource: exporter, Replicas: shards*shardReplicas + configServerReplicas + mongosReplicas}, }, nil } @@ -163,9 +163,9 @@ func (r MongoDB) roleResourceFn(fn func(rr core.ResourceRequirements) core.Resou return nil, err } - return map[api.PodRole]core.ResourceList{ - api.PodRoleDefault: api.MulResourceList(container, replicas), - api.PodRoleExporter: api.MulResourceList(exporter, replicas), + return map[api.PodRole]api.PodInfo{ + api.PodRoleDefault: {Resource: container, Replicas: replicas}, + api.PodRoleExporter: {Resource: exporter, Replicas: replicas}, }, nil } } diff --git a/vendor/kmodules.xyz/resource-metrics/kubedb.com/v1alpha2/mysql.go b/vendor/kmodules.xyz/resource-metrics/kubedb.com/v1alpha2/mysql.go index c2cb55e9bc..afea453813 100644 --- a/vendor/kmodules.xyz/resource-metrics/kubedb.com/v1alpha2/mysql.go +++ b/vendor/kmodules.xyz/resource-metrics/kubedb.com/v1alpha2/mysql.go @@ -98,8 +98,8 @@ func (r MySQL) usesTLSFn(obj map[string]interface{}) (bool, error) { return found, err } -func (r MySQL) roleResourceFn(fn func(rr core.ResourceRequirements) core.ResourceList) func(obj map[string]interface{}) (map[api.PodRole]core.ResourceList, error) { - return func(obj map[string]interface{}) (map[api.PodRole]core.ResourceList, error) { +func (r MySQL) roleResourceFn(fn func(rr core.ResourceRequirements) core.ResourceList) func(obj map[string]interface{}) (map[api.PodRole]api.PodInfo, error) { + return func(obj map[string]interface{}) (map[api.PodRole]api.PodInfo, error) { container, replicas, err := api.AppNodeResources(obj, fn, "spec") if err != nil { return nil, err @@ -110,9 +110,9 @@ func (r MySQL) roleResourceFn(fn func(rr core.ResourceRequirements) core.Resourc return nil, err } - result := map[api.PodRole]core.ResourceList{ - api.PodRoleDefault: api.MulResourceList(container, replicas), - api.PodRoleExporter: api.MulResourceList(exporter, replicas), + result := map[api.PodRole]api.PodInfo{ + api.PodRoleDefault: {Resource: container, Replicas: replicas}, + api.PodRoleExporter: {Resource: exporter, Replicas: replicas}, } // InnoDB Router @@ -125,7 +125,7 @@ func (r MySQL) roleResourceFn(fn func(rr core.ResourceRequirements) core.Resourc if err != nil { return nil, err } - result[api.PodRoleRouter] = api.MulResourceList(router, replicas) + result[api.PodRoleRouter] = api.PodInfo{Resource: router, Replicas: replicas} } return result, nil } diff --git a/vendor/kmodules.xyz/resource-metrics/kubedb.com/v1alpha2/perconaxtradb.go b/vendor/kmodules.xyz/resource-metrics/kubedb.com/v1alpha2/perconaxtradb.go index 476c673581..b5d0127d0f 100644 --- a/vendor/kmodules.xyz/resource-metrics/kubedb.com/v1alpha2/perconaxtradb.go +++ b/vendor/kmodules.xyz/resource-metrics/kubedb.com/v1alpha2/perconaxtradb.go @@ -75,8 +75,8 @@ func (r PerconaXtraDB) usesTLSFn(obj map[string]interface{}) (bool, error) { return found, err } -func (r PerconaXtraDB) roleResourceFn(fn func(rr core.ResourceRequirements) core.ResourceList) func(obj map[string]interface{}) (map[api.PodRole]core.ResourceList, error) { - return func(obj map[string]interface{}) (map[api.PodRole]core.ResourceList, error) { +func (r PerconaXtraDB) roleResourceFn(fn func(rr core.ResourceRequirements) core.ResourceList) func(obj map[string]interface{}) (map[api.PodRole]api.PodInfo, error) { + return func(obj map[string]interface{}) (map[api.PodRole]api.PodInfo, error) { container, replicas, err := api.AppNodeResources(obj, fn, "spec") if err != nil { return nil, err @@ -86,9 +86,9 @@ func (r PerconaXtraDB) roleResourceFn(fn func(rr core.ResourceRequirements) core if err != nil { return nil, err } - return map[api.PodRole]core.ResourceList{ - api.PodRoleDefault: api.MulResourceList(container, replicas), - api.PodRoleExporter: api.MulResourceList(exporter, replicas), + return map[api.PodRole]api.PodInfo{ + api.PodRoleDefault: {Resource: container, Replicas: replicas}, + api.PodRoleExporter: {Resource: exporter, Replicas: replicas}, }, nil } } diff --git a/vendor/kmodules.xyz/resource-metrics/kubedb.com/v1alpha2/pgbouncer.go b/vendor/kmodules.xyz/resource-metrics/kubedb.com/v1alpha2/pgbouncer.go index 0d8b5b11be..0b1428b37b 100644 --- a/vendor/kmodules.xyz/resource-metrics/kubedb.com/v1alpha2/pgbouncer.go +++ b/vendor/kmodules.xyz/resource-metrics/kubedb.com/v1alpha2/pgbouncer.go @@ -75,8 +75,8 @@ func (r PgBouncer) usesTLSFn(obj map[string]interface{}) (bool, error) { return found, err } -func (r PgBouncer) roleResourceFn(fn func(rr core.ResourceRequirements) core.ResourceList) func(obj map[string]interface{}) (map[api.PodRole]core.ResourceList, error) { - return func(obj map[string]interface{}) (map[api.PodRole]core.ResourceList, error) { +func (r PgBouncer) roleResourceFn(fn func(rr core.ResourceRequirements) core.ResourceList) func(obj map[string]interface{}) (map[api.PodRole]api.PodInfo, error) { + return func(obj map[string]interface{}) (map[api.PodRole]api.PodInfo, error) { container, replicas, err := api.AppNodeResources(obj, fn, "spec") if err != nil { return nil, err @@ -86,9 +86,9 @@ func (r PgBouncer) roleResourceFn(fn func(rr core.ResourceRequirements) core.Res if err != nil { return nil, err } - return map[api.PodRole]core.ResourceList{ - api.PodRoleDefault: api.MulResourceList(container, replicas), - api.PodRoleExporter: api.MulResourceList(exporter, replicas), + return map[api.PodRole]api.PodInfo{ + api.PodRoleDefault: {Resource: container, Replicas: replicas}, + api.PodRoleExporter: {Resource: exporter, Replicas: replicas}, }, nil } } diff --git a/vendor/kmodules.xyz/resource-metrics/kubedb.com/v1alpha2/pgpool.go b/vendor/kmodules.xyz/resource-metrics/kubedb.com/v1alpha2/pgpool.go index e70473fedf..3fc5aa7765 100644 --- a/vendor/kmodules.xyz/resource-metrics/kubedb.com/v1alpha2/pgpool.go +++ b/vendor/kmodules.xyz/resource-metrics/kubedb.com/v1alpha2/pgpool.go @@ -75,8 +75,8 @@ func (r Pgpool) usesTLSFn(obj map[string]interface{}) (bool, error) { return found, err } -func (r Pgpool) roleResourceFn(fn func(rr core.ResourceRequirements) core.ResourceList) func(obj map[string]interface{}) (map[api.PodRole]core.ResourceList, error) { - return func(obj map[string]interface{}) (map[api.PodRole]core.ResourceList, error) { +func (r Pgpool) roleResourceFn(fn func(rr core.ResourceRequirements) core.ResourceList) func(obj map[string]interface{}) (map[api.PodRole]api.PodInfo, error) { + return func(obj map[string]interface{}) (map[api.PodRole]api.PodInfo, error) { container, replicas, err := api.AppNodeResourcesV2(obj, fn, PgpoolContainerName, "spec") if err != nil { return nil, err @@ -86,9 +86,9 @@ func (r Pgpool) roleResourceFn(fn func(rr core.ResourceRequirements) core.Resour if err != nil { return nil, err } - return map[api.PodRole]core.ResourceList{ - api.PodRoleDefault: api.MulResourceList(container, replicas), - api.PodRoleExporter: api.MulResourceList(exporter, replicas), + return map[api.PodRole]api.PodInfo{ + api.PodRoleDefault: {Resource: container, Replicas: replicas}, + api.PodRoleExporter: {Resource: exporter, Replicas: replicas}, }, nil } } diff --git a/vendor/kmodules.xyz/resource-metrics/kubedb.com/v1alpha2/postgres.go b/vendor/kmodules.xyz/resource-metrics/kubedb.com/v1alpha2/postgres.go index 8cc4985129..dad3de545a 100644 --- a/vendor/kmodules.xyz/resource-metrics/kubedb.com/v1alpha2/postgres.go +++ b/vendor/kmodules.xyz/resource-metrics/kubedb.com/v1alpha2/postgres.go @@ -76,8 +76,8 @@ func (r Postgres) usesTLSFn(obj map[string]interface{}) (bool, error) { return found, err } -func (r Postgres) roleResourceFn(fn func(rr core.ResourceRequirements) core.ResourceList) func(obj map[string]interface{}) (map[api.PodRole]core.ResourceList, error) { - return func(obj map[string]interface{}) (map[api.PodRole]core.ResourceList, error) { +func (r Postgres) roleResourceFn(fn func(rr core.ResourceRequirements) core.ResourceList) func(obj map[string]interface{}) (map[api.PodRole]api.PodInfo, error) { + return func(obj map[string]interface{}) (map[api.PodRole]api.PodInfo, error) { container, replicas, err := api.AppNodeResources(obj, fn, "spec") if err != nil { return nil, err @@ -87,9 +87,9 @@ func (r Postgres) roleResourceFn(fn func(rr core.ResourceRequirements) core.Reso if err != nil { return nil, err } - return map[api.PodRole]core.ResourceList{ - api.PodRoleDefault: api.MulResourceList(container, replicas), - api.PodRoleExporter: api.MulResourceList(exporter, replicas), + return map[api.PodRole]api.PodInfo{ + api.PodRoleDefault: {Resource: container, Replicas: replicas}, + api.PodRoleExporter: {Resource: exporter, Replicas: replicas}, }, nil } } diff --git a/vendor/kmodules.xyz/resource-metrics/kubedb.com/v1alpha2/proxysql.go b/vendor/kmodules.xyz/resource-metrics/kubedb.com/v1alpha2/proxysql.go index c8f9c2d390..e554a1a8cb 100644 --- a/vendor/kmodules.xyz/resource-metrics/kubedb.com/v1alpha2/proxysql.go +++ b/vendor/kmodules.xyz/resource-metrics/kubedb.com/v1alpha2/proxysql.go @@ -75,8 +75,8 @@ func (r ProxySQL) usesTLSFn(obj map[string]interface{}) (bool, error) { return found, err } -func (r ProxySQL) roleResourceFn(fn func(rr core.ResourceRequirements) core.ResourceList) func(obj map[string]interface{}) (map[api.PodRole]core.ResourceList, error) { - return func(obj map[string]interface{}) (map[api.PodRole]core.ResourceList, error) { +func (r ProxySQL) roleResourceFn(fn func(rr core.ResourceRequirements) core.ResourceList) func(obj map[string]interface{}) (map[api.PodRole]api.PodInfo, error) { + return func(obj map[string]interface{}) (map[api.PodRole]api.PodInfo, error) { container, replicas, err := api.AppNodeResources(obj, fn, "spec") if err != nil { return nil, err @@ -86,9 +86,9 @@ func (r ProxySQL) roleResourceFn(fn func(rr core.ResourceRequirements) core.Reso if err != nil { return nil, err } - return map[api.PodRole]core.ResourceList{ - api.PodRoleDefault: api.MulResourceList(container, replicas), - api.PodRoleExporter: api.MulResourceList(exporter, replicas), + return map[api.PodRole]api.PodInfo{ + api.PodRoleDefault: {Resource: container, Replicas: replicas}, + api.PodRoleExporter: {Resource: exporter, Replicas: replicas}, }, nil } } diff --git a/vendor/kmodules.xyz/resource-metrics/kubedb.com/v1alpha2/rabbitmq.go b/vendor/kmodules.xyz/resource-metrics/kubedb.com/v1alpha2/rabbitmq.go index 07cfcb32f2..59bc7099bb 100644 --- a/vendor/kmodules.xyz/resource-metrics/kubedb.com/v1alpha2/rabbitmq.go +++ b/vendor/kmodules.xyz/resource-metrics/kubedb.com/v1alpha2/rabbitmq.go @@ -75,8 +75,8 @@ func (r RabbitMQ) usesTLSFn(obj map[string]interface{}) (bool, error) { return found, err } -func (r RabbitMQ) roleResourceFn(fn func(rr core.ResourceRequirements) core.ResourceList) func(obj map[string]interface{}) (map[api.PodRole]core.ResourceList, error) { - return func(obj map[string]interface{}) (map[api.PodRole]core.ResourceList, error) { +func (r RabbitMQ) roleResourceFn(fn func(rr core.ResourceRequirements) core.ResourceList) func(obj map[string]interface{}) (map[api.PodRole]api.PodInfo, error) { + return func(obj map[string]interface{}) (map[api.PodRole]api.PodInfo, error) { container, replicas, err := api.AppNodeResourcesV2(obj, fn, RabbitMQContainerName, "spec") if err != nil { return nil, err @@ -86,9 +86,9 @@ func (r RabbitMQ) roleResourceFn(fn func(rr core.ResourceRequirements) core.Reso if err != nil { return nil, err } - return map[api.PodRole]core.ResourceList{ - api.PodRoleDefault: api.MulResourceList(container, replicas), - api.PodRoleExporter: api.MulResourceList(exporter, replicas), + return map[api.PodRole]api.PodInfo{ + api.PodRoleDefault: {Resource: container, Replicas: replicas}, + api.PodRoleExporter: {Resource: exporter, Replicas: replicas}, }, nil } } diff --git a/vendor/kmodules.xyz/resource-metrics/kubedb.com/v1alpha2/redis.go b/vendor/kmodules.xyz/resource-metrics/kubedb.com/v1alpha2/redis.go index 6135e1b3ae..258c880596 100644 --- a/vendor/kmodules.xyz/resource-metrics/kubedb.com/v1alpha2/redis.go +++ b/vendor/kmodules.xyz/resource-metrics/kubedb.com/v1alpha2/redis.go @@ -97,8 +97,8 @@ func (r Redis) usesTLSFn(obj map[string]interface{}) (bool, error) { return found, err } -func (r Redis) roleResourceFn(fn func(rr core.ResourceRequirements) core.ResourceList) func(obj map[string]interface{}) (map[api.PodRole]core.ResourceList, error) { - return func(obj map[string]interface{}) (map[api.PodRole]core.ResourceList, error) { +func (r Redis) roleResourceFn(fn func(rr core.ResourceRequirements) core.ResourceList) func(obj map[string]interface{}) (map[api.PodRole]api.PodInfo, error) { + return func(obj map[string]interface{}) (map[api.PodRole]api.PodInfo, error) { exporter, err := api.ContainerResources(obj, fn, "spec", "monitor", "prometheus", "exporter") if err != nil { return nil, err @@ -129,9 +129,9 @@ func (r Redis) roleResourceFn(fn func(rr core.ResourceRequirements) core.Resourc replicas = shards * shardReplicas } - return map[api.PodRole]core.ResourceList{ - api.PodRoleDefault: api.MulResourceList(container, replicas), - api.PodRoleExporter: api.MulResourceList(exporter, replicas), + return map[api.PodRole]api.PodInfo{ + api.PodRoleDefault: {Resource: container, Replicas: replicas}, + api.PodRoleExporter: {Resource: exporter, Replicas: replicas}, }, nil } } diff --git a/vendor/kmodules.xyz/resource-metrics/kubedb.com/v1alpha2/redissentinel.go b/vendor/kmodules.xyz/resource-metrics/kubedb.com/v1alpha2/redissentinel.go index e12d641510..4bda593cb3 100644 --- a/vendor/kmodules.xyz/resource-metrics/kubedb.com/v1alpha2/redissentinel.go +++ b/vendor/kmodules.xyz/resource-metrics/kubedb.com/v1alpha2/redissentinel.go @@ -62,8 +62,8 @@ func (r RedisSentinel) modeFn(obj map[string]interface{}) (string, error) { return DBModeCluster, nil } -func (r RedisSentinel) roleResourceFn(fn func(rr core.ResourceRequirements) core.ResourceList) func(obj map[string]interface{}) (map[api.PodRole]core.ResourceList, error) { - return func(obj map[string]interface{}) (map[api.PodRole]core.ResourceList, error) { +func (r RedisSentinel) roleResourceFn(fn func(rr core.ResourceRequirements) core.ResourceList) func(obj map[string]interface{}) (map[api.PodRole]api.PodInfo, error) { + return func(obj map[string]interface{}) (map[api.PodRole]api.PodInfo, error) { exporter, err := api.ContainerResources(obj, fn, "spec", "monitor", "prometheus", "exporter") if err != nil { return nil, err @@ -74,9 +74,9 @@ func (r RedisSentinel) roleResourceFn(fn func(rr core.ResourceRequirements) core return nil, err } - return map[api.PodRole]core.ResourceList{ - api.PodRoleDefault: api.MulResourceList(container, replicas), - api.PodRoleExporter: api.MulResourceList(exporter, replicas), + return map[api.PodRole]api.PodInfo{ + api.PodRoleDefault: {Resource: container, Replicas: replicas}, + api.PodRoleExporter: {Resource: exporter, Replicas: replicas}, }, nil } } diff --git a/vendor/kmodules.xyz/resource-metrics/kubedb.com/v1alpha2/singlestore.go b/vendor/kmodules.xyz/resource-metrics/kubedb.com/v1alpha2/singlestore.go index 0e71f7ba69..a456cb2208 100644 --- a/vendor/kmodules.xyz/resource-metrics/kubedb.com/v1alpha2/singlestore.go +++ b/vendor/kmodules.xyz/resource-metrics/kubedb.com/v1alpha2/singlestore.go @@ -100,8 +100,8 @@ func (r Singlestore) usesTLSFn(obj map[string]interface{}) (bool, error) { return found, err } -func (r Singlestore) roleResourceFn(fn func(rr core.ResourceRequirements) core.ResourceList) func(obj map[string]interface{}) (map[api.PodRole]core.ResourceList, error) { - return func(obj map[string]interface{}) (map[api.PodRole]core.ResourceList, error) { +func (r Singlestore) roleResourceFn(fn func(rr core.ResourceRequirements) core.ResourceList) func(obj map[string]interface{}) (map[api.PodRole]api.PodInfo, error) { + return func(obj map[string]interface{}) (map[api.PodRole]api.PodInfo, error) { exporter, err := api.ContainerResources(obj, fn, "spec", "monitor", "prometheus", "exporter") if err != nil { return nil, err @@ -122,10 +122,10 @@ func (r Singlestore) roleResourceFn(fn func(rr core.ResourceRequirements) core.R return nil, err } - return map[api.PodRole]core.ResourceList{ - api.PodRoleAggregator: api.MulResourceList(aggregator, aggregatorReplicas), - api.PodRoleLeaf: api.MulResourceList(leaf, leafReplicas), - api.PodRoleExporter: api.MulResourceList(exporter, aggregatorReplicas+leafReplicas), + return map[api.PodRole]api.PodInfo{ + api.PodRoleAggregator: {Resource: aggregator, Replicas: aggregatorReplicas}, + api.PodRoleLeaf: {Resource: leaf, Replicas: leafReplicas}, + api.PodRoleExporter: {Resource: exporter, Replicas: aggregatorReplicas + leafReplicas}, }, nil } @@ -134,9 +134,9 @@ func (r Singlestore) roleResourceFn(fn func(rr core.ResourceRequirements) core.R return nil, err } - return map[api.PodRole]core.ResourceList{ - api.PodRoleDefault: api.MulResourceList(container, replicas), - api.PodRoleExporter: api.MulResourceList(exporter, replicas), + return map[api.PodRole]api.PodInfo{ + api.PodRoleDefault: {Resource: container, Replicas: replicas}, + api.PodRoleExporter: {Resource: exporter, Replicas: replicas}, }, nil } } diff --git a/vendor/kmodules.xyz/resource-metrics/kubedb.com/v1alpha2/solr.go b/vendor/kmodules.xyz/resource-metrics/kubedb.com/v1alpha2/solr.go index 09fa1f93fc..16b487151e 100644 --- a/vendor/kmodules.xyz/resource-metrics/kubedb.com/v1alpha2/solr.go +++ b/vendor/kmodules.xyz/resource-metrics/kubedb.com/v1alpha2/solr.go @@ -39,8 +39,8 @@ type Solr struct{} func (r Solr) ResourceCalculator() api.ResourceCalculator { return &api.ResourceCalculatorFuncs{ - AppRoles: []api.PodRole{api.PodRoleDefault}, - RuntimeRoles: []api.PodRole{api.PodRoleDefault, api.PodRoleExporter}, + AppRoles: []api.PodRole{api.PodRoleDefault, api.PodRoleCoordinator, api.PodRoleOverseer, api.PodRoleData}, + RuntimeRoles: []api.PodRole{api.PodRoleDefault, api.PodRoleCoordinator, api.PodRoleOverseer, api.PodRoleData, api.PodRoleExporter}, RoleReplicasFn: r.roleReplicasFn, ModeFn: r.modeFn, UsesTLSFn: r.usesTLSFn, @@ -58,7 +58,6 @@ func (r Solr) roleReplicasFn(obj map[string]interface{}) (api.ReplicaList, error } if found && topology != nil { - var replicas int64 = 0 for role, roleSpec := range topology { roleReplicas, found, err := unstructured.NestedInt64(roleSpec.(map[string]interface{}), "replicas") if err != nil { @@ -66,13 +65,8 @@ func (r Solr) roleReplicasFn(obj map[string]interface{}) (api.ReplicaList, error } if found { result[api.PodRole(role)] = roleReplicas - replicas += roleReplicas - } else { - result[api.PodRole(role)] = 1 - replicas += 1 } } - result[api.PodRoleDefault] = replicas } else { // Combined mode replicas, found, err := unstructured.NestedInt64(obj, "spec", "replicas") @@ -105,8 +99,8 @@ func (r Solr) usesTLSFn(obj map[string]interface{}) (bool, error) { return found, err } -func (r Solr) roleResourceFn(fn func(rr core.ResourceRequirements) core.ResourceList) func(obj map[string]interface{}) (map[api.PodRole]core.ResourceList, error) { - return func(obj map[string]interface{}) (map[api.PodRole]core.ResourceList, error) { +func (r Solr) roleResourceFn(fn func(rr core.ResourceRequirements) core.ResourceList) func(obj map[string]interface{}) (map[api.PodRole]api.PodInfo, error) { + return func(obj map[string]interface{}) (map[api.PodRole]api.PodInfo, error) { exporter, err := api.ContainerResources(obj, fn, "spec", "monitor", "prometheus", "exporter") if err != nil { return nil, err @@ -118,22 +112,18 @@ func (r Solr) roleResourceFn(fn func(rr core.ResourceRequirements) core.Resource } if found && topology != nil { var replicas int64 = 0 - var totalResources core.ResourceList - result := map[api.PodRole]core.ResourceList{} + result := map[api.PodRole]api.PodInfo{} for role, roleSpec := range topology { rolePerReplicaResources, roleReplicas, err := api.AppNodeResourcesV2(roleSpec.(map[string]interface{}), fn, SolrContainerName) if err != nil { return nil, err } - - roleResources := api.MulResourceList(rolePerReplicaResources, roleReplicas) - result[api.PodRole(role)] = roleResources - totalResources = api.AddResourceList(totalResources, roleResources) + replicas += roleReplicas + result[api.PodRole(role)] = api.PodInfo{Resource: rolePerReplicaResources, Replicas: roleReplicas} } - result[api.PodRoleDefault] = totalResources - result[api.PodRoleExporter] = api.MulResourceList(exporter, replicas) + result[api.PodRoleExporter] = api.PodInfo{Resource: exporter, Replicas: replicas} return result, nil } @@ -143,9 +133,9 @@ func (r Solr) roleResourceFn(fn func(rr core.ResourceRequirements) core.Resource return nil, err } - return map[api.PodRole]core.ResourceList{ - api.PodRoleDefault: api.MulResourceList(container, replicas), - api.PodRoleExporter: api.MulResourceList(exporter, replicas), + return map[api.PodRole]api.PodInfo{ + api.PodRoleDefault: {Resource: container, Replicas: replicas}, + api.PodRoleExporter: {Resource: exporter, Replicas: replicas}, }, nil } } diff --git a/vendor/kmodules.xyz/resource-metrics/kubedb.com/v1alpha2/zookeeper.go b/vendor/kmodules.xyz/resource-metrics/kubedb.com/v1alpha2/zookeeper.go index 98d2307ee9..1d1dc4d5a9 100644 --- a/vendor/kmodules.xyz/resource-metrics/kubedb.com/v1alpha2/zookeeper.go +++ b/vendor/kmodules.xyz/resource-metrics/kubedb.com/v1alpha2/zookeeper.go @@ -75,8 +75,8 @@ func (z ZooKeeper) usesTLSFn(obj map[string]interface{}) (bool, error) { return found, err } -func (z ZooKeeper) roleResourceFn(fn func(rr core.ResourceRequirements) core.ResourceList) func(obj map[string]interface{}) (map[api.PodRole]core.ResourceList, error) { - return func(obj map[string]interface{}) (map[api.PodRole]core.ResourceList, error) { +func (z ZooKeeper) roleResourceFn(fn func(rr core.ResourceRequirements) core.ResourceList) func(obj map[string]interface{}) (map[api.PodRole]api.PodInfo, error) { + return func(obj map[string]interface{}) (map[api.PodRole]api.PodInfo, error) { container, replicas, err := api.AppNodeResourcesV2(obj, fn, ZooKeeperContainerName, "spec") if err != nil { return nil, err @@ -86,9 +86,9 @@ func (z ZooKeeper) roleResourceFn(fn func(rr core.ResourceRequirements) core.Res if err != nil { return nil, err } - return map[api.PodRole]core.ResourceList{ - api.PodRoleDefault: api.MulResourceList(container, replicas), - api.PodRoleExporter: api.MulResourceList(exporter, replicas), + return map[api.PodRole]api.PodInfo{ + api.PodRoleDefault: {Resource: container, Replicas: replicas}, + api.PodRoleExporter: {Resource: exporter, Replicas: replicas}, }, nil } } diff --git a/vendor/kmodules.xyz/resource-metrics/kubevault.com/v1alpha2/vaultserver.go b/vendor/kmodules.xyz/resource-metrics/kubevault.com/v1alpha2/vaultserver.go index 13e2c25160..43dbf6130f 100644 --- a/vendor/kmodules.xyz/resource-metrics/kubevault.com/v1alpha2/vaultserver.go +++ b/vendor/kmodules.xyz/resource-metrics/kubevault.com/v1alpha2/vaultserver.go @@ -68,8 +68,8 @@ func (r VaultServer) usesTLSFn(obj map[string]interface{}) (bool, error) { return found, err } -func (r VaultServer) roleResourceFn(fn func(rr core.ResourceRequirements) core.ResourceList) func(obj map[string]interface{}) (map[api.PodRole]core.ResourceList, error) { - return func(obj map[string]interface{}) (map[api.PodRole]core.ResourceList, error) { +func (r VaultServer) roleResourceFn(fn func(rr core.ResourceRequirements) core.ResourceList) func(obj map[string]interface{}) (map[api.PodRole]api.PodInfo, error) { + return func(obj map[string]interface{}) (map[api.PodRole]api.PodInfo, error) { exporter, err := api.ContainerResources(obj, fn, "spec", "monitor", "prometheus", "exporter") if err != nil { return nil, err @@ -88,9 +88,9 @@ func (r VaultServer) roleResourceFn(fn func(rr core.ResourceRequirements) core.R container[core.ResourceStorage] = raftBackend[core.ResourceStorage] } - return map[api.PodRole]core.ResourceList{ - api.PodRoleDefault: api.MulResourceList(container, replicas), - api.PodRoleExporter: api.MulResourceList(exporter, replicas), + return map[api.PodRole]api.PodInfo{ + api.PodRoleDefault: {Resource: container, Replicas: replicas}, + api.PodRoleExporter: {Resource: exporter, Replicas: replicas}, }, nil } } diff --git a/vendor/kmodules.xyz/resource-metrics/ops.kubedb.com/v1alpha1/calculator.go b/vendor/kmodules.xyz/resource-metrics/ops.kubedb.com/v1alpha1/calculator.go index 253cd9e861..9c5ee78f49 100644 --- a/vendor/kmodules.xyz/resource-metrics/ops.kubedb.com/v1alpha1/calculator.go +++ b/vendor/kmodules.xyz/resource-metrics/ops.kubedb.com/v1alpha1/calculator.go @@ -18,8 +18,6 @@ package v1alpha1 import ( "kmodules.xyz/resource-metrics/api" - - core "k8s.io/api/core/v1" ) type OpsResourceCalculator struct{} @@ -75,7 +73,7 @@ func (r OpsResourceCalculator) usesTLSFn(opsObj map[string]interface{}) (bool, e return c.UsesTLS(scaledObject) } -func (r OpsResourceCalculator) roleResourceLimitsFn(opsObj map[string]interface{}) (map[api.PodRole]core.ResourceList, error) { +func (r OpsResourceCalculator) roleResourceLimitsFn(opsObj map[string]interface{}) (map[api.PodRole]api.PodInfo, error) { scaledObject, err := GetScaledObject(opsObj) if err != nil { return nil, err @@ -85,10 +83,12 @@ func (r OpsResourceCalculator) roleResourceLimitsFn(opsObj map[string]interface{ if err != nil { return nil, err } - return c.RoleResourceLimits(scaledObject) + + dbLimitFunc := c.GetRoleResourceLimitsFn() + return dbLimitFunc(scaledObject) } -func (r OpsResourceCalculator) roleResourceRequestsFn(opsObj map[string]interface{}) (map[api.PodRole]core.ResourceList, error) { +func (r OpsResourceCalculator) roleResourceRequestsFn(opsObj map[string]interface{}) (map[api.PodRole]api.PodInfo, error) { scaledObject, err := GetScaledObject(opsObj) if err != nil { return nil, err @@ -98,5 +98,7 @@ func (r OpsResourceCalculator) roleResourceRequestsFn(opsObj map[string]interfac if err != nil { return nil, err } - return c.RoleResourceRequests(scaledObject) + + dbRequestFunc := c.GetRoleResourceRequestsFn() + return dbRequestFunc(scaledObject) } diff --git a/vendor/modules.txt b/vendor/modules.txt index 32e5efb050..099dea854e 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -1959,7 +1959,7 @@ kmodules.xyz/monitoring-agent-api/client ## explicit; go 1.22.0 kmodules.xyz/offshoot-api/api/v1 kmodules.xyz/offshoot-api/api/v2 -# kmodules.xyz/resource-metadata v0.18.11-0.20240711013212-9244361c17c6 +# kmodules.xyz/resource-metadata v0.18.11-0.20240712133719-cde3a1299082 ## explicit; go 1.22.1 kmodules.xyz/resource-metadata/apis/core/install kmodules.xyz/resource-metadata/apis/core/v1alpha1 @@ -1990,7 +1990,7 @@ kmodules.xyz/resource-metadata/pkg/layouts kmodules.xyz/resource-metadata/pkg/tableconvertor kmodules.xyz/resource-metadata/pkg/tableconvertor/lib kmodules.xyz/resource-metadata/pkg/tableconvertor/printers -# kmodules.xyz/resource-metrics v0.30.1 +# kmodules.xyz/resource-metrics v0.30.2-0.20240711131537-5e9d22977a2c ## explicit; go 1.22.1 kmodules.xyz/resource-metrics kmodules.xyz/resource-metrics/api @@ -1999,6 +1999,7 @@ kmodules.xyz/resource-metrics/batch/v1 kmodules.xyz/resource-metrics/batch/v1beta1 kmodules.xyz/resource-metrics/core/v1 kmodules.xyz/resource-metrics/kafka.kubedb.com/v1alpha1 +kmodules.xyz/resource-metrics/kubedb.com/v1 kmodules.xyz/resource-metrics/kubedb.com/v1alpha2 kmodules.xyz/resource-metrics/kubevault.com/v1alpha2 kmodules.xyz/resource-metrics/ops.kubedb.com/v1alpha1