Skip to content

Commit 176fa85

Browse files
Kubernetes Enterprise Operator Release 1.33.0 (#309)
* Updated * Updated
1 parent c98d4cf commit 176fa85

File tree

134 files changed

+2982
-458
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

134 files changed

+2982
-458
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
kubectl apply --context "${K8S_CLUSTER_0_CONTEXT_NAME}" -n "${MDB_NAMESPACE}" -f - <<EOF
2+
apiVersion: cert-manager.io/v1
3+
kind: Certificate
4+
metadata:
5+
name: mdb-cert
6+
spec:
7+
dnsNames:
8+
- "*.${MDB_CLUSTER_0_EXTERNAL_DOMAIN}"
9+
- "*.${MDB_CLUSTER_1_EXTERNAL_DOMAIN}"
10+
- "*.${MDB_CLUSTER_2_EXTERNAL_DOMAIN}"
11+
duration: 240h0m0s
12+
issuerRef:
13+
name: my-ca-issuer
14+
kind: ClusterIssuer
15+
renewBefore: 120h0m0s
16+
secretName: cert-prefix-mdb-cert
17+
usages:
18+
- server auth
19+
- client auth
20+
EOF
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
kubectl apply --context "${K8S_CLUSTER_0_CONTEXT_NAME}" -n "${MDB_NAMESPACE}" -f - <<EOF
2+
apiVersion: mongodb.com/v1
3+
kind: MongoDBMultiCluster
4+
metadata:
5+
name: ${RS_RESOURCE_NAME}
6+
spec:
7+
type: ReplicaSet
8+
version: ${MONGODB_VERSION}
9+
opsManager:
10+
configMapRef:
11+
name: mdb-org-project-config
12+
credentials: mdb-org-owner-credentials
13+
duplicateServiceObjects: false
14+
persistent: true
15+
backup:
16+
mode: enabled
17+
security:
18+
certsSecretPrefix: cert-prefix
19+
tls:
20+
ca: ca-issuer
21+
authentication:
22+
enabled: true
23+
modes: ["SCRAM"]
24+
clusterSpecList:
25+
- clusterName: ${K8S_CLUSTER_0_CONTEXT_NAME}
26+
members: 2
27+
externalAccess:
28+
externalDomain: "${MDB_CLUSTER_0_EXTERNAL_DOMAIN}"
29+
externalService:
30+
annotations:
31+
external-dns.alpha.kubernetes.io/hostname: "{podName}.${MDB_CLUSTER_0_EXTERNAL_DOMAIN}"
32+
- clusterName: ${K8S_CLUSTER_1_CONTEXT_NAME}
33+
members: 1
34+
externalAccess:
35+
externalDomain: "${MDB_CLUSTER_1_EXTERNAL_DOMAIN}"
36+
externalService:
37+
annotations:
38+
external-dns.alpha.kubernetes.io/hostname: "{podName}.${MDB_CLUSTER_1_EXTERNAL_DOMAIN}"
39+
- clusterName: ${K8S_CLUSTER_2_CONTEXT_NAME}
40+
members: 2
41+
externalAccess:
42+
externalDomain: "${MDB_CLUSTER_2_EXTERNAL_DOMAIN}"
43+
externalService:
44+
annotations:
45+
external-dns.alpha.kubernetes.io/hostname: "{podName}.${MDB_CLUSTER_2_EXTERNAL_DOMAIN}"
46+
EOF
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
echo; echo "Waiting for MongoDB to reach Running phase..."
2+
kubectl --context "${K8S_CLUSTER_0_CONTEXT_NAME}" -n "${MDB_NAMESPACE}" wait --for=jsonpath='{.status.phase}'=Running "mdbmc/${RS_RESOURCE_NAME}" --timeout=900s
3+
echo; echo "Pods running in cluster ${K8S_CLUSTER_0_CONTEXT_NAME}"
4+
kubectl --context "${K8S_CLUSTER_0_CONTEXT_NAME}" -n "${MDB_NAMESPACE}" get pods
5+
echo; echo "Pods running in cluster ${K8S_CLUSTER_1_CONTEXT_NAME}"
6+
kubectl --context "${K8S_CLUSTER_1_CONTEXT_NAME}" -n "${MDB_NAMESPACE}" get pods
7+
echo; echo "Pods running in cluster ${K8S_CLUSTER_2_CONTEXT_NAME}"
8+
kubectl --context "${K8S_CLUSTER_2_CONTEXT_NAME}" -n "${MDB_NAMESPACE}" get pods
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
kubectl apply --context "${K8S_CLUSTER_0_CONTEXT_NAME}" -n "${MDB_NAMESPACE}" -f - <<EOF
2+
apiVersion: v1
3+
kind: Secret
4+
metadata:
5+
name: rs-user-password
6+
type: Opaque
7+
stringData:
8+
password: password
9+
---
10+
apiVersion: mongodb.com/v1
11+
kind: MongoDBUser
12+
metadata:
13+
name: rs-user
14+
spec:
15+
passwordSecretKeyRef:
16+
name: rs-user-password
17+
key: password
18+
username: "rs-user"
19+
db: "admin"
20+
mongodbResourceRef:
21+
name: ${RS_RESOURCE_NAME}
22+
roles:
23+
- db: "admin"
24+
name: "root"
25+
EOF
26+
27+
kubectl --context "${K8S_CLUSTER_0_CONTEXT_NAME}" wait --for=jsonpath='{.status.phase}'=Updated -n "${MDB_NAMESPACE}" mdbu/rs-user --timeout=300s
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
external_ip="$(kubectl get --context "${K8S_CLUSTER_0_CONTEXT_NAME}" -n "${MDB_NAMESPACE}" svc "${RS_RESOURCE_NAME}-0-0-svc-external" -o=jsonpath="{.status.loadBalancer.ingress[0].ip}")"
2+
3+
mkdir -p certs
4+
kubectl get --context "${K8S_CLUSTER_0_CONTEXT_NAME}" -n "${MDB_NAMESPACE}" cm/ca-issuer -o=jsonpath='{.data.ca-pem}' > certs/ca.crt
5+
6+
mongosh --host "${external_ip}" --username rs-user --password password --tls --tlsCAFile certs/ca.crt --tlsAllowInvalidHostnames --eval "db.runCommand({connectionStatus : 1})"
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
kubectl --context "${K8S_CLUSTER_0_CONTEXT_NAME}" -n "${MDB_NAMESPACE}" delete mdbu/rs-user
2+
3+
kubectl --context "${K8S_CLUSTER_0_CONTEXT_NAME}" -n "${MDB_NAMESPACE}" delete "mdbmc/${RS_RESOURCE_NAME}"
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
# This script builds on top of the environment configured in the setup guides.
2+
# It depends (uses) the following env variables defined there to work correctly.
3+
# If you don't use the setup guide to bootstrap the environment, then define them here.
4+
# ${K8S_CLUSTER_0_CONTEXT_NAME}
5+
# ${K8S_CLUSTER_1_CONTEXT_NAME}
6+
# ${K8S_CLUSTER_2_CONTEXT_NAME}
7+
# ${MDB_NAMESPACE}
8+
# ${CUSTOM_DOMAIN}
9+
10+
export RS_RESOURCE_NAME=mdb
11+
export MONGODB_VERSION="8.0.5-ent"
12+
13+
export MDB_CLUSTER_0_EXTERNAL_DOMAIN="${K8S_CLUSTER_0}.${CUSTOM_DOMAIN}"
14+
export MDB_CLUSTER_1_EXTERNAL_DOMAIN="${K8S_CLUSTER_1}.${CUSTOM_DOMAIN}"
15+
export MDB_CLUSTER_2_EXTERNAL_DOMAIN="${K8S_CLUSTER_2}.${CUSTOM_DOMAIN}"
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
{
2+
authInfo: {
3+
authenticatedUsers: [ { user: 'rs-user', db: 'admin' } ],
4+
authenticatedUserRoles: [ { role: 'root', db: 'admin' } ]
5+
},
6+
ok: 1,
7+
'$clusterTime': {
8+
clusterTime: Timestamp({ t: 1743589744, i: 1 }),
9+
signature: {
10+
hash: Binary.createFromBase64('fiBrPX9aaxTmMmLb1K2q6d4/XfQ=', 0),
11+
keyId: Long('7488660369775263749')
12+
}
13+
},
14+
operationTime: Timestamp({ t: 1743589744, i: 1 })
15+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
#!/usr/bin/env bash
2+
3+
set -eou pipefail
4+
5+
script_name=$(readlink -f "${BASH_SOURCE[0]}")
6+
script_dir=$(dirname "${script_name}")
7+
8+
source scripts/code_snippets/sample_test_runner.sh
9+
10+
pushd "${script_dir}"
11+
12+
prepare_snippets
13+
14+
run 9000_delete_resources.sh
15+
16+
popd
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
#!/usr/bin/env bash
2+
3+
set -eou pipefail
4+
5+
script_name=$(readlink -f "${BASH_SOURCE[0]}")
6+
script_dir=$(dirname "${script_name}")
7+
8+
source scripts/code_snippets/sample_test_runner.sh
9+
10+
pushd "${script_dir}"
11+
12+
prepare_snippets
13+
14+
run 1050_generate_certs.sh
15+
run 1100_mongodb_replicaset_multi_cluster.sh
16+
run 1110_mongodb_replicaset_multi_cluster_wait_for_running_state.sh
17+
18+
run 1200_create_mongodb_user.sh
19+
sleep 10
20+
run_for_output 1210_verify_mongosh_connection.sh
21+
22+
popd

architectures/mongodb-replicaset-multi-cluster/code_snippets/1100_mongodb_replicaset_multi_cluster.sh

+3-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ kubectl apply --context "${K8S_CLUSTER_0_CONTEXT_NAME}" -n "${MDB_NAMESPACE}" -f
22
apiVersion: mongodb.com/v1
33
kind: MongoDBMultiCluster
44
metadata:
5-
name: ${RESOURCE_NAME}
5+
name: ${RS_RESOURCE_NAME}
66
spec:
77
type: ReplicaSet
88
version: ${MONGODB_VERSION}
@@ -12,6 +12,8 @@ spec:
1212
credentials: mdb-org-owner-credentials
1313
duplicateServiceObjects: false
1414
persistent: true
15+
backup:
16+
mode: enabled
1517
externalAccess: {}
1618
security:
1719
certsSecretPrefix: cert-prefix

architectures/mongodb-replicaset-multi-cluster/code_snippets/1110_mongodb_replicaset_multi_cluster_wait_for_running_state.sh

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
echo; echo "Waiting for MongoDB to reach Running phase..."
2-
kubectl --context "${K8S_CLUSTER_0_CONTEXT_NAME}" -n "${MDB_NAMESPACE}" wait --for=jsonpath='{.status.phase}'=Running "mdbmc/${RESOURCE_NAME}" --timeout=900s
2+
kubectl --context "${K8S_CLUSTER_0_CONTEXT_NAME}" -n "${MDB_NAMESPACE}" wait --for=jsonpath='{.status.phase}'=Running "mdbmc/${RS_RESOURCE_NAME}" --timeout=900s
33
echo; echo "Pods running in cluster ${K8S_CLUSTER_0_CONTEXT_NAME}"
44
kubectl --context "${K8S_CLUSTER_0_CONTEXT_NAME}" -n "${MDB_NAMESPACE}" get pods
55
echo; echo "Pods running in cluster ${K8S_CLUSTER_1_CONTEXT_NAME}"

architectures/mongodb-replicaset-multi-cluster/code_snippets/1200_create_mongodb_user.sh

+2-2
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,10 @@ spec:
1818
username: "rs-user"
1919
db: "admin"
2020
mongodbResourceRef:
21-
name: ${RESOURCE_NAME}
21+
name: ${RS_RESOURCE_NAME}
2222
roles:
2323
- db: "admin"
2424
name: "root"
2525
EOF
2626

27-
kubectl --context "${K8S_CLUSTER_0_CONTEXT_NAME}" wait --for=jsonpath='{.status.phase}'=Updated -n "${MDB_NAMESPACE}" mdbu/rs-user
27+
kubectl --context "${K8S_CLUSTER_0_CONTEXT_NAME}" wait --for=jsonpath='{.status.phase}'=Updated -n "${MDB_NAMESPACE}" mdbu/rs-user --timeout=300s

architectures/mongodb-replicaset-multi-cluster/code_snippets/1210_verify_mongosh_connection.sh

+1-7
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,4 @@
1-
# Load Balancers sometimes take longer to get an IP assigned, we need to retry
2-
while [ -z "$(kubectl get --context "${K8S_CLUSTER_0_CONTEXT_NAME}" -n "${MDB_NAMESPACE}" svc "${RESOURCE_NAME}-0-0-svc-external" -o=jsonpath="{.status.loadBalancer.ingress[0].ip}")" ]
3-
do
4-
sleep 5
5-
done
6-
7-
external_ip="$(kubectl get --context "${K8S_CLUSTER_0_CONTEXT_NAME}" -n "${MDB_NAMESPACE}" svc "${RESOURCE_NAME}-0-0-svc-external" -o=jsonpath="{.status.loadBalancer.ingress[0].ip}")"
1+
external_ip="$(kubectl get --context "${K8S_CLUSTER_0_CONTEXT_NAME}" -n "${MDB_NAMESPACE}" svc "${RS_RESOURCE_NAME}-0-0-svc-external" -o=jsonpath="{.status.loadBalancer.ingress[0].ip}")"
82

93
mkdir -p certs
104
kubectl get --context "${K8S_CLUSTER_0_CONTEXT_NAME}" -n "${MDB_NAMESPACE}" cm/ca-issuer -o=jsonpath='{.data.ca-pem}' > certs/ca.crt
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
kubectl --context "${K8S_CLUSTER_0_CONTEXT_NAME}" -n "${MDB_NAMESPACE}" delete mdbu/rs-user
2+
3+
kubectl --context "${K8S_CLUSTER_0_CONTEXT_NAME}" -n "${MDB_NAMESPACE}" delete "mdbmc/${RS_RESOURCE_NAME}"

architectures/mongodb-replicaset-multi-cluster/env_variables.sh

100755100644
+2-2
Original file line numberDiff line numberDiff line change
@@ -6,5 +6,5 @@
66
# ${K8S_CLUSTER_2_CONTEXT_NAME}
77
# ${MDB_NAMESPACE}
88

9-
export RESOURCE_NAME=mdb
10-
export MONGODB_VERSION=8.0.5
9+
export RS_RESOURCE_NAME=mdb
10+
export MONGODB_VERSION="8.0.5-ent"
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
#!/usr/bin/env bash
2+
3+
set -eou pipefail
4+
5+
script_name=$(readlink -f "${BASH_SOURCE[0]}")
6+
script_dir=$(dirname "${script_name}")
7+
8+
source scripts/code_snippets/sample_test_runner.sh
9+
10+
pushd "${script_dir}"
11+
12+
prepare_snippets
13+
14+
run 9000_delete_resources.sh
15+
16+
popd
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,115 @@
1+
kubectl apply --context "${K8S_CLUSTER_0_CONTEXT_NAME}" -n "${MDB_NAMESPACE}" -f - <<EOF
2+
apiVersion: cert-manager.io/v1
3+
kind: Certificate
4+
metadata:
5+
name: mdb-sh-cert
6+
spec:
7+
dnsNames:
8+
- "*.${MDB_CLUSTER_0_EXTERNAL_DOMAIN}"
9+
- "*.${MDB_CLUSTER_1_EXTERNAL_DOMAIN}"
10+
- "*.${MDB_CLUSTER_2_EXTERNAL_DOMAIN}"
11+
duration: 240h0m0s
12+
issuerRef:
13+
name: my-ca-issuer
14+
kind: ClusterIssuer
15+
renewBefore: 120h0m0s
16+
secretName: cert-prefix-mdb-sh-cert
17+
usages:
18+
- server auth
19+
- client auth
20+
---
21+
apiVersion: cert-manager.io/v1
22+
kind: Certificate
23+
metadata:
24+
name: mdb-sh-0-cert
25+
spec:
26+
dnsNames:
27+
- "*.${MDB_CLUSTER_0_EXTERNAL_DOMAIN}"
28+
- "*.${MDB_CLUSTER_1_EXTERNAL_DOMAIN}"
29+
- "*.${MDB_CLUSTER_2_EXTERNAL_DOMAIN}"
30+
duration: 240h0m0s
31+
issuerRef:
32+
name: my-ca-issuer
33+
kind: ClusterIssuer
34+
renewBefore: 120h0m0s
35+
secretName: cert-prefix-mdb-sh-0-cert
36+
usages:
37+
- server auth
38+
- client auth
39+
---
40+
apiVersion: cert-manager.io/v1
41+
kind: Certificate
42+
metadata:
43+
name: mdb-sh-1-cert
44+
spec:
45+
dnsNames:
46+
- "*.${MDB_CLUSTER_0_EXTERNAL_DOMAIN}"
47+
- "*.${MDB_CLUSTER_1_EXTERNAL_DOMAIN}"
48+
- "*.${MDB_CLUSTER_2_EXTERNAL_DOMAIN}"
49+
duration: 240h0m0s
50+
issuerRef:
51+
name: my-ca-issuer
52+
kind: ClusterIssuer
53+
renewBefore: 120h0m0s
54+
secretName: cert-prefix-mdb-sh-1-cert
55+
usages:
56+
- server auth
57+
- client auth
58+
---
59+
apiVersion: cert-manager.io/v1
60+
kind: Certificate
61+
metadata:
62+
name: mdb-sh-2-cert
63+
spec:
64+
dnsNames:
65+
- "*.${MDB_CLUSTER_0_EXTERNAL_DOMAIN}"
66+
- "*.${MDB_CLUSTER_1_EXTERNAL_DOMAIN}"
67+
- "*.${MDB_CLUSTER_2_EXTERNAL_DOMAIN}"
68+
duration: 240h0m0s
69+
issuerRef:
70+
name: my-ca-issuer
71+
kind: ClusterIssuer
72+
renewBefore: 120h0m0s
73+
secretName: cert-prefix-mdb-sh-2-cert
74+
usages:
75+
- server auth
76+
- client auth
77+
---
78+
apiVersion: cert-manager.io/v1
79+
kind: Certificate
80+
metadata:
81+
name: mdb-sh-config-cert
82+
spec:
83+
dnsNames:
84+
- "*.${MDB_CLUSTER_0_EXTERNAL_DOMAIN}"
85+
- "*.${MDB_CLUSTER_1_EXTERNAL_DOMAIN}"
86+
- "*.${MDB_CLUSTER_2_EXTERNAL_DOMAIN}"
87+
duration: 240h0m0s
88+
issuerRef:
89+
name: my-ca-issuer
90+
kind: ClusterIssuer
91+
renewBefore: 120h0m0s
92+
secretName: cert-prefix-mdb-sh-config-cert
93+
usages:
94+
- server auth
95+
- client auth
96+
---
97+
apiVersion: cert-manager.io/v1
98+
kind: Certificate
99+
metadata:
100+
name: mdb-sh-mongos-cert
101+
spec:
102+
dnsNames:
103+
- "*.${MDB_CLUSTER_0_EXTERNAL_DOMAIN}"
104+
- "*.${MDB_CLUSTER_1_EXTERNAL_DOMAIN}"
105+
- "*.${MDB_CLUSTER_2_EXTERNAL_DOMAIN}"
106+
duration: 240h0m0s
107+
issuerRef:
108+
name: my-ca-issuer
109+
kind: ClusterIssuer
110+
renewBefore: 120h0m0s
111+
secretName: cert-prefix-mdb-sh-mongos-cert
112+
usages:
113+
- server auth
114+
- client auth
115+
EOF

0 commit comments

Comments
 (0)