Skip to content

Commit 892f41a

Browse files
committed
various minimal changes and improvements
1 parent 88e771a commit 892f41a

5 files changed

Lines changed: 56 additions & 48 deletions

File tree

storage/onpremise/mongodb-percona/locals.tf

Lines changed: 37 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,11 @@ locals {
33
# <cluster-release-name>-psmdb-db-rs0 (for replica set, no sharding)
44
# <cluster-release-name>-psmdb-db-mongos (mongos, sharded)
55
# <cluster-release-name>-psmdb-db-cfg0 (for config server, sharded)
6-
cluster_release_name = "${var.name}-db-ps"
7-
secrets_name = "${local.cluster_release_name}-secrets"
8-
ssl_secret_name = "${local.cluster_release_name}-ssl"
6+
cluster_release_name = "${var.name}-db-ps"
7+
8+
secrets_name = "${local.cluster_release_name}-secrets"
9+
ssl_secret_name = "${local.cluster_release_name}-ssl"
10+
ssl_internal_secret_name = "${local.cluster_release_name}-ssl-internal"
911

1012
mongodb_dns = var.sharding != null && var.sharding.enabled ? (
1113
"${local.cluster_release_name}-mongos.${var.namespace}.svc.cluster.local"
@@ -16,4 +18,36 @@ locals {
1618
mongodb_port = 27017
1719
mongodb_connection_params = var.sharding != null && var.sharding.enabled ? "" : "?replicaSet=rs0"
1820
mongodb_url = "mongodb://${local.mongodb_dns}:${local.mongodb_port}/${var.cluster.database_name}?authSource=admin"
21+
22+
shards_volume_spec = var.persistence != null ? {
23+
persistentVolumeClaim = {
24+
storageClassName = try(
25+
coalesce(var.persistence.shards.storage_class_name),
26+
length(kubernetes_storage_class.shards) > 0 ? kubernetes_storage_class.shards[0].metadata[0].name : null,
27+
null
28+
)
29+
resources = {
30+
requests = {
31+
storage = var.persistence.shards.storage_size
32+
}
33+
}
34+
}
35+
} : {
36+
emptyDir = {}
37+
}
38+
39+
configsvr_volume_spec = var.persistence != null ? {
40+
persistentVolumeClaim = {
41+
storageClassName = try(
42+
coalesce(var.persistence.configsvr.storage_class_name),
43+
length(kubernetes_storage_class.configsvr) > 0 ? kubernetes_storage_class.configsvr[0].metadata[0].name : null,
44+
null
45+
)
46+
resources = {
47+
requests = { storage = var.persistence.configsvr.storage_size }
48+
}
49+
}
50+
} : {
51+
emptyDir = {}
52+
}
1953
}

storage/onpremise/mongodb-percona/main.tf

Lines changed: 9 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ resource "helm_release" "operator" {
99

1010
values = [
1111
yamlencode({
12+
annotations = var.operator.annotations
1213
nodeSelector = var.operator.node_selector
1314
tolerations = [
1415
for key, value in var.operator.node_selector : {
@@ -26,13 +27,13 @@ resource "kubectl_manifest" "cluster" {
2627
depends_on = [
2728
helm_release.operator,
2829
]
29-
3030
yaml_body = yamlencode({
3131
apiVersion = "psmdb.percona.com/v1"
3232
kind = "PerconaServerMongoDB"
3333
metadata = {
3434
name = local.cluster_release_name
3535
namespace = var.namespace
36+
annotations = var.cluster.annotations
3637
}
3738
spec = {
3839
backup = {
@@ -46,9 +47,9 @@ resource "kubectl_manifest" "cluster" {
4647
}
4748

4849
secrets = {
49-
users = "${local.cluster_release_name}-secrets"
50-
# ssl = "${local.cluster_release_name}-ssl"
51-
# sslInternal = "${local.cluster_release_name}-ssl-internal"
50+
users = local.secrets_name
51+
ssl = local.ssl_secret_name
52+
sslInternal = local.ssl_internal_secret_name
5253
}
5354

5455
tls = {
@@ -92,30 +93,14 @@ resource "kubectl_manifest" "cluster" {
9293

9394
resources = var.resources.configsvr
9495

95-
volumeSpec = {
96-
persistentVolumeClaim = {
97-
storageClassName = try(
98-
coalesce(var.persistence.configsvr.storage_class_name),
99-
length(kubernetes_storage_class.configsvr) > 0 ? kubernetes_storage_class.configsvr[0].metadata[0].name : null,
100-
null
101-
)
102-
resources = {
103-
requests = { storage = var.persistence.configsvr.storage_size }
104-
}
105-
}
106-
}
96+
volumeSpec = local.configsvr_volume_spec
10797
} : {
108-
size = 0
98+
size = 2
10999
resources = {}
110100
nodeSelector = {}
111101
tolerations = []
112102
volumeSpec = {
113-
persistentVolumeClaim = {
114-
storageClassName = ""
115-
resources = {
116-
requests = { storage = "1Gi" }
117-
}
118-
}
103+
emptyDir = {}
119104
}
120105
}
121106

@@ -169,20 +154,7 @@ resource "kubectl_manifest" "cluster" {
169154

170155
resources = var.resources.shards
171156

172-
volumeSpec = {
173-
persistentVolumeClaim = {
174-
storageClassName = try(
175-
coalesce(var.persistence.shards.storage_class_name),
176-
length(kubernetes_storage_class.shards) > 0 ? kubernetes_storage_class.shards[0].metadata[0].name : null,
177-
null
178-
)
179-
resources = {
180-
requests = {
181-
storage = var.persistence.shards.storage_size
182-
}
183-
}
184-
}
185-
}
157+
volumeSpec = local.shards_volume_spec
186158
}
187159
]
188160
}

storage/onpremise/mongodb-percona/outputs.tf

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -36,21 +36,21 @@ output "env" {
3636
} : {
3737
"MongoDB__Sharding" = "false"
3838
"MongoDB__ReplicaSet" = "rs0"
39-
})
39+
}, kubectl_manifest.cluster.id != "" ? {} : {})
4040
}
4141

4242
output "user_credentials" {
4343
description = "User credentials of MongoDB"
4444
value = {
45-
secret = "${local.cluster_release_name}-secrets"
45+
secret = local.secrets_name
4646
data_keys = ["MONGODB_DATABASE_ADMIN_USER", "MONGODB_DATABASE_ADMIN_PASSWORD"]
4747
}
4848
}
4949

5050
output "endpoints" {
5151
description = "Endpoints of MongoDB"
5252
value = {
53-
secret = "${local.cluster_release_name}-secrets"
53+
secret = local.secrets_name
5454
data_keys = ["MONGODB_DATABASE_ADMIN_USER", "MONGODB_DATABASE_ADMIN_PASSWORD"]
5555
}
5656
}
@@ -59,7 +59,7 @@ output "mount_secret" {
5959
description = "Secrets to be mounted as volumes"
6060
value = {
6161
"mongo-certificate" = {
62-
secret = "${local.cluster_release_name}-ssl"
62+
secret = local.ssl_secret_name
6363
path = "/mongodb/certs/"
6464
mode = "0644"
6565
}
@@ -70,7 +70,7 @@ output "env_from_secret" {
7070
description = "Environment variables from secrets"
7171
value = {
7272
"MongoDB__User" = {
73-
secret = "${local.cluster_release_name}-secrets"
73+
secret = local.secrets_name
7474
field = "MONGODB_DATABASE_ADMIN_USER"
7575
}
7676
"MongoDB__Password" = {

storage/onpremise/mongodb-percona/persistence.tf

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
resource "kubernetes_storage_class" "shards" {
2-
count = can(coalesce(var.persistence.shards.storage_provisioner)) ? 1 : 0
2+
count = var.persistence != null && can(coalesce(var.persistence.shards.storage_provisioner)) ? 1 : 0
33
metadata {
44
name = "${var.name}-shards"
55
labels = {
@@ -16,7 +16,7 @@ resource "kubernetes_storage_class" "shards" {
1616
}
1717

1818
resource "kubernetes_storage_class" "configsvr" {
19-
count = var.sharding != null && var.sharding.enabled && can(coalesce(var.persistence.configsvr.storage_provisioner)) ? 1 : 0
19+
count = var.persistence != null && var.sharding != null && var.sharding.enabled && can(coalesce(var.persistence.configsvr.storage_provisioner)) ? 1 : 0
2020
metadata {
2121
name = "${var.name}-configsvr"
2222
labels = {

storage/onpremise/mongodb-percona/variables.tf

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ variable "operator" {
2626
image = optional(string, "percona/percona-server-mongodb-operator")
2727
tag = optional(string)
2828
node_selector = optional(map(string), {})
29+
annotations = optional(map(string), {})
2930
})
3031
default = {}
3132
}
@@ -44,6 +45,7 @@ variable "cluster" {
4445
database_name = optional(string, "database")
4546
replicas = optional(number, 1)
4647
node_selector = optional(map(string), {})
48+
annotations = optional(map(string), {})
4749
})
4850
default = {}
4951
}
@@ -107,7 +109,7 @@ variable "persistence" {
107109
parameters = optional(map(string), {})
108110
}), {})
109111
})
110-
default = {}
112+
default = null
111113
}
112114

113115
# ──────────────────────────────────────────────

0 commit comments

Comments
 (0)