From 8e5660e4422f8c591d0b347d0bc38db18717b9c5 Mon Sep 17 00:00:00 2001 From: ashraful Date: Mon, 22 Apr 2024 12:20:15 +0600 Subject: [PATCH] Add SingleStore TLS Signed-off-by: ashraful --- go.mod | 2 +- go.sum | 4 +- singlestore/kubedb_client_builder.go | 28 +- .../apis/kubedb/v1alpha2/constants.go | 49 ++- .../apis/kubedb/v1alpha2/druid_helpers.go | 20 +- .../kubedb/v1alpha2/singlestore_helpers.go | 50 ++- .../kubedb/v1alpha2/singlestore_webhook.go | 2 + .../apis/kubedb/v1alpha2/solr_helpers.go | 10 + .../ops.kubedb.com_rabbitmqopsrequests.yaml | 335 ------------------ vendor/modules.txt | 2 +- 10 files changed, 121 insertions(+), 381 deletions(-) delete mode 100644 vendor/kubedb.dev/apimachinery/crds/ops.kubedb.com_rabbitmqopsrequests.yaml diff --git a/go.mod b/go.mod index b9fed46dd..096720f10 100644 --- a/go.mod +++ b/go.mod @@ -25,7 +25,7 @@ require ( k8s.io/klog/v2 v2.120.1 kmodules.xyz/client-go v0.29.13 kmodules.xyz/custom-resources v0.29.1 - kubedb.dev/apimachinery v0.44.1-0.20240418111017-ee6ba81797f6 + kubedb.dev/apimachinery v0.44.1-0.20240424083633-36da0c72ae58 sigs.k8s.io/controller-runtime v0.17.2 xorm.io/xorm v1.3.6 ) diff --git a/go.sum b/go.sum index b633b9a9b..cc2310280 100644 --- a/go.sum +++ b/go.sum @@ -585,8 +585,8 @@ 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.0 h1:GHLhxxT9jU1N8+FvOCCeJNyU5g0duYS46UGrs6AHNLY= kmodules.xyz/offshoot-api v0.29.0/go.mod h1:5NxhBblXoDHWStx9HCDJR2KFTwYjEZ7i1Id3jelIunw= -kubedb.dev/apimachinery v0.44.1-0.20240418111017-ee6ba81797f6 h1:VrQhjNOGtqmMiT7lMxIydlfhuL8Ya+uitzyvBbvToQ4= -kubedb.dev/apimachinery v0.44.1-0.20240418111017-ee6ba81797f6/go.mod h1:7daaaWragCFLV38plrrJtsOuzinBSX3enMpliqlm3Uo= +kubedb.dev/apimachinery v0.44.1-0.20240424083633-36da0c72ae58 h1:EWL4TKROjG6YoMewmr8Bq8SrZHZ34w1BuV988v4/X80= +kubedb.dev/apimachinery v0.44.1-0.20240424083633-36da0c72ae58/go.mod h1:7daaaWragCFLV38plrrJtsOuzinBSX3enMpliqlm3Uo= kubeops.dev/petset v0.0.5 h1:VVXi39JhjondlbHyZ98z0MLp6VCmiCMinL59K48Y2zA= kubeops.dev/petset v0.0.5/go.mod h1:ijtKT1HlAht2vBEZj5LW7C00XEs3B0d1VdCQgd5V4cA= lukechampine.com/uint128 v1.1.1/go.mod h1:c4eWIwlEGaxC/+H1VguhU4PHXNWDCDMUlWdIWl2j1gk= diff --git a/singlestore/kubedb_client_builder.go b/singlestore/kubedb_client_builder.go index bcaabf08f..492120156 100644 --- a/singlestore/kubedb_client_builder.go +++ b/singlestore/kubedb_client_builder.go @@ -18,10 +18,12 @@ package singlestore import ( "context" + "crypto/tls" + "crypto/x509" "database/sql" "fmt" - _ "github.com/go-sql-driver/mysql" + sql_driver "github.com/go-sql-driver/mysql" core "k8s.io/api/core/v1" "k8s.io/klog/v2" api "kubedb.dev/apimachinery/apis/kubedb/v1alpha2" @@ -147,10 +149,10 @@ func (o *KubeDBClientBuilder) getConnectionString() (string, error) { } tlsConfig := "" - /*if o.db.Spec.RequireSSL && o.db.Spec.TLS != nil { + if o.db.Spec.TLS != nil { // get client-secret var clientSecret core.Secret - err := o.kc.Get(o.ctx, client.ObjectKey{Namespace: o.db.GetNamespace(), Name: o.db.GetCertSecretName(api.MySQLClientCert)}, &clientSecret) + err := o.kc.Get(o.ctx, client.ObjectKey{Namespace: o.db.GetNamespace(), Name: o.db.GetCertSecretName(api.SinglestoreClientCert)}, &clientSecret) if err != nil { return "", err } @@ -168,19 +170,15 @@ func (o *KubeDBClientBuilder) getConnectionString() (string, error) { clientCert = append(clientCert, cert) // tls custom setup - if o.db.Spec.RequireSSL { - err = sql_driver.RegisterTLSConfig(api.MySQLTLSConfigCustom, &tls.Config{ - RootCAs: certPool, - Certificates: clientCert, - }) - if err != nil { - return "", err - } - tlsConfig = fmt.Sprintf("tls=%s", api.MySQLTLSConfigCustom) - } else { - tlsConfig = fmt.Sprintf("tls=%s", api.MySQLTLSConfigSkipVerify) + err = sql_driver.RegisterTLSConfig(api.SinglestoreTLSConfigCustom, &tls.Config{ + RootCAs: certPool, + Certificates: clientCert, + }) + if err != nil { + return "", err } - }*/ + tlsConfig = fmt.Sprintf("tls=%s", api.SinglestoreTLSConfigCustom) + } connector := fmt.Sprintf("%v:%v@tcp(%s:%d)/%s?%s", user, pass, o.url, 3306, "memsql", tlsConfig) return connector, nil diff --git a/vendor/kubedb.dev/apimachinery/apis/kubedb/v1alpha2/constants.go b/vendor/kubedb.dev/apimachinery/apis/kubedb/v1alpha2/constants.go index 2b0f8b8a0..72f783f91 100644 --- a/vendor/kubedb.dev/apimachinery/apis/kubedb/v1alpha2/constants.go +++ b/vendor/kubedb.dev/apimachinery/apis/kubedb/v1alpha2/constants.go @@ -325,19 +325,22 @@ const ( SinglestoreDatabasePortName = "db" SinglestorePrimaryServicePortName = "primary" SinglestoreStudioPortName = "studio" - SinglestoreDatabasePort = 3306 - SinglestoreStudioPort = 8081 - SinglestoreExporterPort = 9104 - SinglestoreRootUserName = "ROOT_USERNAME" - SinglestoreRootPassword = "ROOT_PASSWORD" - SinglestoreRootUser = "root" - DatabasePodMaster = "Master" - DatabasePodAggregator = "Aggregator" - DatabasePodLeaf = "Leaf" - PetSetTypeAggregator = "aggregator" - PetSetTypeLeaf = "leaf" - SinglestoreDatabaseHealth = "singlestore_health" - SinglestoreTableHealth = "singlestore_health_table" + + SinglestoreDatabasePort = 3306 + SinglestoreStudioPort = 8081 + SinglestoreExporterPort = 9104 + + SinglestoreRootUserName = "ROOT_USERNAME" + SinglestoreRootPassword = "ROOT_PASSWORD" + SinglestoreRootUser = "root" + DatabasePodMaster = "Master" + DatabasePodAggregator = "Aggregator" + DatabasePodLeaf = "Leaf" + PetSetTypeAggregator = "aggregator" + PetSetTypeLeaf = "leaf" + + SinglestoreDatabaseHealth = "singlestore_health" + SinglestoreTableHealth = "singlestore_health_table" SinglestoreCoordinatorContainerName = "singlestore-coordinator" SinglestoreContainerName = "singlestore" @@ -351,6 +354,14 @@ const ( SinglestoreVolumeMountPathInitScript = "/scripts" SinglestoreVolumeNameData = "data" SinglestoreVolumeMountPathData = "/var/lib/memsql" + SinglestoreVolumeNameTLS = "tls-volume" + SinglestoreVolumeMountPathTLS = "/etc/memsql/certs" + + SinglestoreTLSConfigCustom = "custom" + SinglestoreTLSConfigSkipVerify = "skip-verify" + SinglestoreTLSConfigTrue = "true" + SinglestoreTLSConfigFalse = "false" + SinglestoreTLSConfigPreferred = "preferred" // =========================== PostgreSQL Constants ============================ PostgresDatabasePortName = "db" @@ -767,6 +778,7 @@ const ( ResourcePluralSolr = "solrs" SolrPortName = "http" SolrRestPort = 8983 + SolrExporterPort = 9854 SolrSecretKey = "solr.xml" SolrContainerName = "solr" SolrInitContainerName = "init-solr" @@ -1225,6 +1237,17 @@ var ( core.ResourceMemory: resource.MustParse("2Gi"), }, } + + // DefaultResourcesMemoryIntensive must be used for Druid MiddleManagers + DefaultResourcesMemoryIntensiveDruid = core.ResourceRequirements{ + Requests: core.ResourceList{ + core.ResourceCPU: resource.MustParse(".500"), + core.ResourceMemory: resource.MustParse("2.5Gi"), + }, + Limits: core.ResourceList{ + core.ResourceMemory: resource.MustParse("2.5Gi"), + }, + } ) func DefaultArbiter(computeOnly bool) core.ResourceRequirements { diff --git a/vendor/kubedb.dev/apimachinery/apis/kubedb/v1alpha2/druid_helpers.go b/vendor/kubedb.dev/apimachinery/apis/kubedb/v1alpha2/druid_helpers.go index e3515ab21..c598a53e5 100644 --- a/vendor/kubedb.dev/apimachinery/apis/kubedb/v1alpha2/druid_helpers.go +++ b/vendor/kubedb.dev/apimachinery/apis/kubedb/v1alpha2/druid_helpers.go @@ -380,7 +380,7 @@ func (d *Druid) SetDefaults() { d.Spec.Topology.Coordinators.PodTemplate.Spec.SecurityContext = &v1.PodSecurityContext{FSGroup: druidVersion.Spec.SecurityContext.RunAsUser} } d.setDefaultContainerSecurityContext(&druidVersion, &d.Spec.Topology.Coordinators.PodTemplate) - d.setDefaultContainerResourceLimits(&d.Spec.Topology.Coordinators.PodTemplate) + d.setDefaultContainerResourceLimits(&d.Spec.Topology.Coordinators.PodTemplate, DruidNodeRoleCoordinators) } } if d.Spec.Topology.Overlords != nil { @@ -392,7 +392,7 @@ func (d *Druid) SetDefaults() { d.Spec.Topology.Overlords.PodTemplate.Spec.SecurityContext = &v1.PodSecurityContext{FSGroup: druidVersion.Spec.SecurityContext.RunAsUser} } d.setDefaultContainerSecurityContext(&druidVersion, &d.Spec.Topology.Overlords.PodTemplate) - d.setDefaultContainerResourceLimits(&d.Spec.Topology.Overlords.PodTemplate) + d.setDefaultContainerResourceLimits(&d.Spec.Topology.Overlords.PodTemplate, DruidNodeRoleOverlords) } } if d.Spec.Topology.MiddleManagers != nil { @@ -404,7 +404,7 @@ func (d *Druid) SetDefaults() { d.Spec.Topology.MiddleManagers.PodTemplate.Spec.SecurityContext = &v1.PodSecurityContext{FSGroup: druidVersion.Spec.SecurityContext.RunAsUser} } d.setDefaultContainerSecurityContext(&druidVersion, &d.Spec.Topology.MiddleManagers.PodTemplate) - d.setDefaultContainerResourceLimits(&d.Spec.Topology.MiddleManagers.PodTemplate) + d.setDefaultContainerResourceLimits(&d.Spec.Topology.MiddleManagers.PodTemplate, DruidNodeRoleMiddleManagers) } } if d.Spec.Topology.Historicals != nil { @@ -416,7 +416,7 @@ func (d *Druid) SetDefaults() { d.Spec.Topology.Historicals.PodTemplate.Spec.SecurityContext = &v1.PodSecurityContext{FSGroup: druidVersion.Spec.SecurityContext.RunAsUser} } d.setDefaultContainerSecurityContext(&druidVersion, &d.Spec.Topology.Historicals.PodTemplate) - d.setDefaultContainerResourceLimits(&d.Spec.Topology.Historicals.PodTemplate) + d.setDefaultContainerResourceLimits(&d.Spec.Topology.Historicals.PodTemplate, DruidNodeRoleHistoricals) } } if d.Spec.Topology.Brokers != nil { @@ -428,7 +428,7 @@ func (d *Druid) SetDefaults() { d.Spec.Topology.Brokers.PodTemplate.Spec.SecurityContext = &v1.PodSecurityContext{FSGroup: druidVersion.Spec.SecurityContext.RunAsUser} } d.setDefaultContainerSecurityContext(&druidVersion, &d.Spec.Topology.Brokers.PodTemplate) - d.setDefaultContainerResourceLimits(&d.Spec.Topology.Brokers.PodTemplate) + d.setDefaultContainerResourceLimits(&d.Spec.Topology.Brokers.PodTemplate, DruidNodeRoleBrokers) } } @@ -441,7 +441,7 @@ func (d *Druid) SetDefaults() { d.Spec.Topology.Routers.PodTemplate.Spec.SecurityContext = &v1.PodSecurityContext{FSGroup: druidVersion.Spec.SecurityContext.RunAsUser} } d.setDefaultContainerSecurityContext(&druidVersion, &d.Spec.Topology.Routers.PodTemplate) - d.setDefaultContainerResourceLimits(&d.Spec.Topology.Routers.PodTemplate) + d.setDefaultContainerResourceLimits(&d.Spec.Topology.Routers.PodTemplate, DruidNodeRoleRouters) } } } @@ -498,10 +498,14 @@ func (d *Druid) assignDefaultContainerSecurityContext(druidVersion *catalog.Drui } } -func (d *Druid) setDefaultContainerResourceLimits(podTemplate *ofst.PodTemplateSpec) { +func (d *Druid) setDefaultContainerResourceLimits(podTemplate *ofst.PodTemplateSpec, nodeRole DruidNodeRoleType) { dbContainer := coreutil.GetContainerByName(podTemplate.Spec.Containers, DruidContainerName) if dbContainer != nil && (dbContainer.Resources.Requests == nil && dbContainer.Resources.Limits == nil) { - apis.SetDefaultResourceLimits(&dbContainer.Resources, DefaultResources) + if nodeRole == DruidNodeRoleMiddleManagers { + apis.SetDefaultResourceLimits(&dbContainer.Resources, DefaultResourcesMemoryIntensiveDruid) + } else { + apis.SetDefaultResourceLimits(&dbContainer.Resources, DefaultResources) + } } initContainer := coreutil.GetContainerByName(podTemplate.Spec.InitContainers, DruidInitContainerName) diff --git a/vendor/kubedb.dev/apimachinery/apis/kubedb/v1alpha2/singlestore_helpers.go b/vendor/kubedb.dev/apimachinery/apis/kubedb/v1alpha2/singlestore_helpers.go index 185931923..ea4d19cf5 100644 --- a/vendor/kubedb.dev/apimachinery/apis/kubedb/v1alpha2/singlestore_helpers.go +++ b/vendor/kubedb.dev/apimachinery/apis/kubedb/v1alpha2/singlestore_helpers.go @@ -118,7 +118,33 @@ func (s singlestoreStatsService) Scheme() string { } func (s singlestoreStatsService) TLSConfig() *promapi.TLSConfig { - return nil + return &promapi.TLSConfig{ + SafeTLSConfig: promapi.SafeTLSConfig{ + CA: promapi.SecretOrConfigMap{ + Secret: &core.SecretKeySelector{ + LocalObjectReference: core.LocalObjectReference{ + Name: s.GetCertSecretName(SinglestoreClientCert), + }, + Key: CACert, + }, + }, + Cert: promapi.SecretOrConfigMap{ + Secret: &core.SecretKeySelector{ + LocalObjectReference: core.LocalObjectReference{ + Name: s.GetCertSecretName(SinglestoreClientCert), + }, + Key: core.TLSCertKey, + }, + }, + KeySecret: &core.SecretKeySelector{ + LocalObjectReference: core.LocalObjectReference{ + Name: s.GetCertSecretName(SinglestoreClientCert), + }, + Key: core.TLSPrivateKeyKey, + }, + InsecureSkipVerify: false, + }, + } } func (s Singlestore) StatsService() mona.StatsAccessor { @@ -251,6 +277,23 @@ func (s *Singlestore) SetHealthCheckerDefaults() { } } +// CertificateName returns the default certificate name and/or certificate secret name for a certificate alias +func (s *Singlestore) CertificateName(alias SinglestoreCertificateAlias) string { + return metautil.NameWithSuffix(s.Name, fmt.Sprintf("%s-cert", string(alias))) +} + +// GetCertSecretName returns the secret name for a certificate alias if any +// otherwise returns default certificate secret name for the given alias. +func (s *Singlestore) GetCertSecretName(alias SinglestoreCertificateAlias) string { + if s.Spec.TLS != nil { + name, ok := kmapi.GetCertificateSecretName(s.Spec.TLS.Certificates, string(alias)) + if ok { + return name + } + } + return s.CertificateName(alias) +} + func (s *Singlestore) GetAuthSecretName() string { if s.Spec.AuthSecret != nil && s.Spec.AuthSecret.Name != "" { return s.Spec.AuthSecret.Name @@ -461,11 +504,6 @@ func (s *Singlestore) SetTLSDefaults() { s.Spec.TLS.Certificates = kmapi.SetMissingSecretNameForCertificate(s.Spec.TLS.Certificates, string(SinglestoreClientCert), s.CertificateName(SinglestoreClientCert)) } -// CertificateName returns the default certificate name and/or certificate secret name for a certificate alias -func (s *Singlestore) CertificateName(alias SinglestoreCertificateAlias) string { - return metautil.NameWithSuffix(s.Name, fmt.Sprintf("%s-cert", string(alias))) -} - func (s *Singlestore) ReplicasAreReady(lister pslister.PetSetLister) (bool, string, error) { // Desire number of petSets expectedItems := 1 diff --git a/vendor/kubedb.dev/apimachinery/apis/kubedb/v1alpha2/singlestore_webhook.go b/vendor/kubedb.dev/apimachinery/apis/kubedb/v1alpha2/singlestore_webhook.go index 2bb627e9d..f2171cb01 100644 --- a/vendor/kubedb.dev/apimachinery/apis/kubedb/v1alpha2/singlestore_webhook.go +++ b/vendor/kubedb.dev/apimachinery/apis/kubedb/v1alpha2/singlestore_webhook.go @@ -215,6 +215,7 @@ var sdbReservedVolumes = []string{ SinglestoreVolumeNameCustomConfig, SinglestoreVolmeNameInitScript, SinglestoreVolumeNameData, + SinglestoreVolumeNameTLS, } var sdbReservedVolumesMountPaths = []string{ @@ -222,6 +223,7 @@ var sdbReservedVolumesMountPaths = []string{ SinglestoreVolumeMountPathInitScript, SinglestoreVolumeMountPathCustomConfig, SinglestoreVolumeMountPathUserInitScript, + SinglestoreVolumeMountPathTLS, } func sdbValidateVersion(s *Singlestore) error { diff --git a/vendor/kubedb.dev/apimachinery/apis/kubedb/v1alpha2/solr_helpers.go b/vendor/kubedb.dev/apimachinery/apis/kubedb/v1alpha2/solr_helpers.go index 681233b1b..fa8a7cfa6 100644 --- a/vendor/kubedb.dev/apimachinery/apis/kubedb/v1alpha2/solr_helpers.go +++ b/vendor/kubedb.dev/apimachinery/apis/kubedb/v1alpha2/solr_helpers.go @@ -320,6 +320,16 @@ func (s *Solr) SetDefaults(slVersion *catalog.SolrVersion) { s.setDefaultContainerSecurityContext(slVersion, &s.Spec.PodTemplate) s.setDefaultContainerResourceLimits(&s.Spec.PodTemplate) } + + if s.Spec.Monitor != nil { + if s.Spec.Monitor.Prometheus == nil { + s.Spec.Monitor.Prometheus = &mona.PrometheusSpec{} + } + if s.Spec.Monitor.Prometheus != nil && s.Spec.Monitor.Prometheus.Exporter.Port == 0 { + s.Spec.Monitor.Prometheus.Exporter.Port = SolrExporterPort + } + s.Spec.Monitor.SetDefaults() + } } func (s *Solr) setDefaultContainerSecurityContext(slVersion *catalog.SolrVersion, podTemplate *ofst.PodTemplateSpec) { diff --git a/vendor/kubedb.dev/apimachinery/crds/ops.kubedb.com_rabbitmqopsrequests.yaml b/vendor/kubedb.dev/apimachinery/crds/ops.kubedb.com_rabbitmqopsrequests.yaml deleted file mode 100644 index b5c358f8a..000000000 --- a/vendor/kubedb.dev/apimachinery/crds/ops.kubedb.com_rabbitmqopsrequests.yaml +++ /dev/null @@ -1,335 +0,0 @@ -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - creationTimestamp: null - labels: - app.kubernetes.io/name: kubedb - name: rabbitmqopsrequests.ops.kubedb.com -spec: - group: ops.kubedb.com - names: - categories: - - datastore - - kubedb - - appscode - kind: RabbitMQOpsRequest - listKind: RabbitMQOpsRequestList - plural: rabbitmqopsrequests - shortNames: - - kfops - singular: rabbitmqopsrequest - scope: Namespaced - versions: - - additionalPrinterColumns: - - jsonPath: .spec.type - name: Type - type: string - - jsonPath: .status.phase - name: Status - type: string - - jsonPath: .metadata.creationTimestamp - name: Age - type: date - name: v1alpha1 - schema: - openAPIV3Schema: - properties: - apiVersion: - type: string - kind: - type: string - metadata: - type: object - spec: - properties: - apply: - default: IfReady - enum: - - IfReady - - Always - type: string - configuration: - properties: - applyConfig: - additionalProperties: - type: string - type: object - configSecret: - properties: - name: - type: string - type: object - x-kubernetes-map-type: atomic - removeCustomConfig: - type: boolean - type: object - databaseRef: - properties: - name: - type: string - type: object - x-kubernetes-map-type: atomic - horizontalScaling: - properties: - node: - format: int32 - type: integer - type: object - restart: - type: object - timeout: - type: string - tls: - properties: - certificates: - items: - properties: - alias: - type: string - dnsNames: - items: - type: string - type: array - duration: - type: string - emailAddresses: - items: - type: string - type: array - ipAddresses: - items: - type: string - type: array - issuerRef: - properties: - apiGroup: - type: string - kind: - type: string - name: - type: string - required: - - kind - - name - type: object - x-kubernetes-map-type: atomic - privateKey: - properties: - encoding: - enum: - - PKCS1 - - PKCS8 - type: string - type: object - renewBefore: - type: string - secretName: - type: string - subject: - properties: - countries: - items: - type: string - type: array - localities: - items: - type: string - type: array - organizationalUnits: - items: - type: string - type: array - organizations: - items: - type: string - type: array - postalCodes: - items: - type: string - type: array - provinces: - items: - type: string - type: array - serialNumber: - type: string - streetAddresses: - items: - type: string - type: array - type: object - uris: - items: - type: string - type: array - required: - - alias - type: object - type: array - issuerRef: - properties: - apiGroup: - type: string - kind: - type: string - name: - type: string - required: - - kind - - name - type: object - x-kubernetes-map-type: atomic - remove: - type: boolean - rotateCertificates: - type: boolean - type: object - type: - enum: - - UpdateVersion - - HorizontalScaling - - VerticalScaling - - VolumeExpansion - - Restart - - Reconfigure - - ReconfigureTLS - type: string - updateVersion: - properties: - targetVersion: - type: string - type: object - verticalScaling: - properties: - node: - properties: - nodeSelectionPolicy: - enum: - - LabelSelector - - Taint - 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 - volumeExpansion: - properties: - mode: - enum: - - Offline - - Online - type: string - node: - 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 - required: - - mode - type: object - required: - - databaseRef - - type - type: object - status: - properties: - conditions: - items: - properties: - lastTransitionTime: - format: date-time - type: string - message: - type: string - observedGeneration: - format: int64 - type: integer - reason: - type: string - severity: - type: string - status: - type: string - type: - type: string - required: - - lastTransitionTime - - status - - type - type: object - type: array - observedGeneration: - format: int64 - type: integer - pausedBackups: - items: - properties: - apiGroup: - type: string - kind: - type: string - name: - type: string - namespace: - type: string - required: - - name - type: object - type: array - phase: - enum: - - Pending - - Progressing - - Successful - - WaitingForApproval - - Failed - - Approved - - Denied - - Skipped - type: string - type: object - type: object - served: true - storage: true - subresources: - status: {} diff --git a/vendor/modules.txt b/vendor/modules.txt index 61dc0ec71..5af1a34c9 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -1439,7 +1439,7 @@ kmodules.xyz/monitoring-agent-api/api/v1 ## explicit; go 1.21.5 kmodules.xyz/offshoot-api/api/v1 kmodules.xyz/offshoot-api/api/v2 -# kubedb.dev/apimachinery v0.44.1-0.20240418111017-ee6ba81797f6 +# kubedb.dev/apimachinery v0.44.1-0.20240424083633-36da0c72ae58 ## explicit; go 1.22.0 kubedb.dev/apimachinery/apis kubedb.dev/apimachinery/apis/catalog