diff --git a/.github/workflows/cd-pipeline.yaml b/.github/workflows/cd-pipeline.yaml index 654d89d98b..6ee4ac03f8 100644 --- a/.github/workflows/cd-pipeline.yaml +++ b/.github/workflows/cd-pipeline.yaml @@ -36,6 +36,7 @@ on: # rebuild any PRs and main branch changes - 'bitnami/memcached/**' - 'bitnami/minio/**' - 'bitnami/mongodb/**' + - 'bitnami/mongodb-sharded/**' - 'bitnami/moodle/**' - 'bitnami/mysql/**' - 'bitnami/nats/**' diff --git a/.vib/mongodb-sharded/goss/goss.yaml b/.vib/mongodb-sharded/goss/goss.yaml new file mode 100644 index 0000000000..b8c0b51cab --- /dev/null +++ b/.vib/mongodb-sharded/goss/goss.yaml @@ -0,0 +1,41 @@ +command: + {{- $mongos := .Vars.mongos.replicaCount }} + {{- $shards := .Vars.shards }} + {{- $shardNodes := .Vars.shardsvr.dataNode.replicaCount }} + {{- $collection := printf "test_%s" (randAlpha 5) }} + {{- $dbUser := .Vars.auth.rootUser }} + {{- $dbPassword := .Vars.auth.rootPassword }} + {{- $authOptions := printf "-u %s -p %s" $dbUser $dbPassword }} + {{- $svcPort := .Vars.mongos.servicePerReplica.port }} + {{- $localEndpoint := printf "%s:%d" "localhost" .Vars.common.containerPorts.mongodb }} + mongos-check: + exec: mongosh --quiet {{ $authOptions }} {{ $localEndpoint }} --eval "db.createCollection('{{ $collection }}')"{{ range $e, $i := until $mongos }} && mongosh --quiet {{ $authOptions }} mongodb-sharded-{{ $i }}:{{ $svcPort }} --eval "db.getCollectionNames()" | grep {{ $collection }}{{ end }} + exit-status: 0 + timeout: 20000 + sharding-status: + exec: if [ "$(mongosh --quiet {{ $authOptions }} {{ $localEndpoint }} --eval 'sh.status()' | grep 'state.*1' | wc -l)" -ne {{ $shards }} ]; then exit 1; fi + exit-status: 0 + timeout: 20000 + shard-data-nodes: + exec: mongosh --quiet {{ $authOptions }} {{ $localEndpoint }} --eval "sh.status()" + exit-status: 0 + stdout: + {{ range $e, $shard := until $shards }} + {{ range $e, $shardNode := until $shardNodes }} + - /host.*mongodb-sharded-shard{{ $shard }}-data-{{ $shardNode }}/ + {{ end }} + {{ end }} + timeout: 20000 + check-user-info: + exec: id + exit-status: 0 + stdout: + - uid={{ .Vars.mongos.containerSecurityContext.runAsUser }} + - /groups=.*{{ .Vars.mongos.podSecurityContext.fsGroup }}/ +file: + /opt/bitnami/mongodb/conf/keyfile: + mode: "0600" + filetype: file + contains: + - {{ .Vars.auth.replicaSetKey }} + exists: true diff --git a/.vib/mongodb-sharded/goss/vars.yaml b/.vib/mongodb-sharded/goss/vars.yaml new file mode 100644 index 0000000000..f30f0a9d3d --- /dev/null +++ b/.vib/mongodb-sharded/goss/vars.yaml @@ -0,0 +1,19 @@ +shards: 3 +auth: + rootUser: root + rootPassword: Password123!4 + replicaSetKey: SetPassword1234 +common: + containerPorts: + mongodb: 27017 +mongos: + replicaCount: 2 + podSecurityContext: + fsGroup: 1002 + containerSecurityContext: + runAsUser: 1002 + servicePerReplica: + port: 80 +shardsvr: + dataNode: + replicaCount: 2 diff --git a/.vib/mongodb-sharded/vib-publish.json b/.vib/mongodb-sharded/vib-publish.json index dc4355fb0a..ffa107b56b 100644 --- a/.vib/mongodb-sharded/vib-publish.json +++ b/.vib/mongodb-sharded/vib-publish.json @@ -22,7 +22,7 @@ "url": "{SHA_ARCHIVE}", "path": "/bitnami/mongodb-sharded" }, - "runtime_parameters": "ImF1dGgiOgogICJyb290UGFzc3dvcmQiOiAiQzY1ZDRRcnQiCiAgInJlcGxpY2FTZXRLZXkiOiAiOXc2cVR4a1YiCiJzZXJ2aWNlIjoKICAicG9ydHMiOgogICAgIm1vbmdvZGIiOiA4MAogICJ0eXBlIjogIkxvYWRCYWxhbmNlciIKInBlcnNpc3RlbmNlIjoKICAiZW5hYmxlZCI6IGZhbHNlCg==", + "runtime_parameters": "YXV0aDoKICBlbmFibGVkOiB0cnVlCiAgcm9vdFVzZXI6IHJvb3QKICByb290UGFzc3dvcmQ6IFBhc3N3b3JkMTIzITQKICByZXBsaWNhU2V0S2V5OiBTZXRQYXNzd29yZDEyMzQKc2hhcmRzOiAzCmNvbW1vbjoKICBjb250YWluZXJQb3J0czoKICAgIG1vbmdvZGI6IDI3MDE3CnNlcnZpY2U6CiAgcG9ydHM6CiAgICBtb25nb2RiOiA4MAogIHR5cGU6IExvYWRCYWxhbmNlcgpjb25maWdzdnI6CiAgcmVwbGljYUNvdW50OiAxCiAgcG9kU2VjdXJpdHlDb250ZXh0OgogICAgZW5hYmxlZDogdHJ1ZQogICAgZnNHcm91cDogMTAwMgogIGNvbnRhaW5lclNlY3VyaXR5Q29udGV4dDoKICAgIGVuYWJsZWQ6IHRydWUKICAgIHJ1bkFzVXNlcjogMTAwMgptb25nb3M6CiAgcmVwbGljYUNvdW50OiAyCiAgcG9kU2VjdXJpdHlDb250ZXh0OgogICAgZW5hYmxlZDogdHJ1ZQogICAgZnNHcm91cDogMTAwMgogIGNvbnRhaW5lclNlY3VyaXR5Q29udGV4dDoKICAgIGVuYWJsZWQ6IHRydWUKICAgIHJ1bkFzVXNlcjogMTAwMgogIHVzZVN0YXRlZnVsU2V0OiB0cnVlCiAgc2VydmljZVBlclJlcGxpY2E6CiAgICBlbmFibGVkOiB0cnVlCiAgICB0eXBlOiBDbHVzdGVySVAKICAgIHBvcnQ6IDgwCnNoYXJkc3ZyOgogIGRhdGFOb2RlOgogICAgcmVwbGljYUNvdW50OiAyCiAgICBwb2RTZWN1cml0eUNvbnRleHQ6CiAgICAgIGVuYWJsZWQ6IHRydWUKICAgICAgZnNHcm91cDogMTAwMgogICAgY29udGFpbmVyU2VjdXJpdHlDb250ZXh0OgogICAgICBlbmFibGVkOiB0cnVlCiAgICAgIHJ1bkFzVXNlcjogMTAwMgogIGFyYml0ZXI6CiAgICByZXBsaWNhQ291bnQ6IDA=", "target_platform": { "target_platform_id": "{VIB_ENV_TARGET_PLATFORM}", "size": { @@ -36,6 +36,18 @@ "params": { "endpoint": "lb-mongodb-sharded-mongodb" } + }, + { + "action_id": "goss", + "params": { + "resources": { + "path": "/.vib/mongodb-sharded/goss" + }, + "remote": { + "workload": "sts-mongodb-sharded-mongos" + }, + "vars_file": "vars.yaml" + } } ] }, diff --git a/.vib/mongodb-sharded/vib-verify.json b/.vib/mongodb-sharded/vib-verify.json index 7301497662..0333869b2b 100644 --- a/.vib/mongodb-sharded/vib-verify.json +++ b/.vib/mongodb-sharded/vib-verify.json @@ -22,7 +22,7 @@ "url": "{SHA_ARCHIVE}", "path": "/bitnami/mongodb-sharded" }, - "runtime_parameters": "ImF1dGgiOgogICJyb290UGFzc3dvcmQiOiAiQzY1ZDRRcnQiCiAgInJlcGxpY2FTZXRLZXkiOiAiOXc2cVR4a1YiCiJzZXJ2aWNlIjoKICAicG9ydHMiOgogICAgIm1vbmdvZGIiOiA4MAogICJ0eXBlIjogIkxvYWRCYWxhbmNlciIKInBlcnNpc3RlbmNlIjoKICAiZW5hYmxlZCI6IGZhbHNlCg==", + "runtime_parameters": "YXV0aDoKICBlbmFibGVkOiB0cnVlCiAgcm9vdFVzZXI6IHJvb3QKICByb290UGFzc3dvcmQ6IFBhc3N3b3JkMTIzITQKICByZXBsaWNhU2V0S2V5OiBTZXRQYXNzd29yZDEyMzQKc2hhcmRzOiAzCmNvbW1vbjoKICBjb250YWluZXJQb3J0czoKICAgIG1vbmdvZGI6IDI3MDE3CnNlcnZpY2U6CiAgcG9ydHM6CiAgICBtb25nb2RiOiA4MAogIHR5cGU6IExvYWRCYWxhbmNlcgpjb25maWdzdnI6CiAgcmVwbGljYUNvdW50OiAxCiAgcG9kU2VjdXJpdHlDb250ZXh0OgogICAgZW5hYmxlZDogdHJ1ZQogICAgZnNHcm91cDogMTAwMgogIGNvbnRhaW5lclNlY3VyaXR5Q29udGV4dDoKICAgIGVuYWJsZWQ6IHRydWUKICAgIHJ1bkFzVXNlcjogMTAwMgptb25nb3M6CiAgcmVwbGljYUNvdW50OiAyCiAgcG9kU2VjdXJpdHlDb250ZXh0OgogICAgZW5hYmxlZDogdHJ1ZQogICAgZnNHcm91cDogMTAwMgogIGNvbnRhaW5lclNlY3VyaXR5Q29udGV4dDoKICAgIGVuYWJsZWQ6IHRydWUKICAgIHJ1bkFzVXNlcjogMTAwMgogIHVzZVN0YXRlZnVsU2V0OiB0cnVlCiAgc2VydmljZVBlclJlcGxpY2E6CiAgICBlbmFibGVkOiB0cnVlCiAgICB0eXBlOiBDbHVzdGVySVAKICAgIHBvcnQ6IDgwCnNoYXJkc3ZyOgogIGRhdGFOb2RlOgogICAgcmVwbGljYUNvdW50OiAyCiAgICBwb2RTZWN1cml0eUNvbnRleHQ6CiAgICAgIGVuYWJsZWQ6IHRydWUKICAgICAgZnNHcm91cDogMTAwMgogICAgY29udGFpbmVyU2VjdXJpdHlDb250ZXh0OgogICAgICBlbmFibGVkOiB0cnVlCiAgICAgIHJ1bkFzVXNlcjogMTAwMgogIGFyYml0ZXI6CiAgICByZXBsaWNhQ291bnQ6IDA=", "target_platform": { "target_platform_id": "{VIB_ENV_TARGET_PLATFORM}", "size": { @@ -36,6 +36,18 @@ "params": { "endpoint": "lb-mongodb-sharded-mongodb" } + }, + { + "action_id": "goss", + "params": { + "resources": { + "path": "/.vib/mongodb-sharded/goss" + }, + "remote": { + "workload": "sts-mongodb-sharded-mongos" + }, + "vars_file": "vars.yaml" + } } ] }