Skip to content

Commit 015f0ba

Browse files
authored
Update sample files from MEKO (#2050)
1 parent 378af41 commit 015f0ba

File tree

87 files changed

+1637
-0
lines changed

Some content is hidden

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

87 files changed

+1637
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
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_NAMESPACE}.svc.cluster.local"
9+
duration: 240h0m0s
10+
issuerRef:
11+
name: my-ca-issuer
12+
kind: ClusterIssuer
13+
renewBefore: 120h0m0s
14+
secretName: cert-prefix-mdb-cert
15+
usages:
16+
- server auth
17+
- client auth
18+
EOF
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
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: ${RESOURCE_NAME}
6+
spec:
7+
type: ReplicaSet
8+
version: 8.0.3
9+
opsManager:
10+
configMapRef:
11+
name: mdb-org-project-config
12+
credentials: mdb-org-owner-credentials
13+
duplicateServiceObjects: false
14+
persistent: true
15+
externalAccess: {}
16+
security:
17+
certsSecretPrefix: cert-prefix
18+
tls:
19+
ca: ca-issuer
20+
authentication:
21+
enabled: true
22+
modes: ["SCRAM"]
23+
clusterSpecList:
24+
- clusterName: ${K8S_CLUSTER_0_CONTEXT_NAME}
25+
members: 2
26+
- clusterName: ${K8S_CLUSTER_1_CONTEXT_NAME}
27+
members: 1
28+
- clusterName: ${K8S_CLUSTER_2_CONTEXT_NAME}
29+
members: 2
30+
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/${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: ${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
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
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}")"
8+
9+
mkdir -p certs
10+
kubectl get --context "${K8S_CLUSTER_0_CONTEXT_NAME}" -n "${MDB_NAMESPACE}" cm/ca-issuer -o=jsonpath='{.data.ca-pem}' > certs/ca.crt
11+
12+
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,9 @@
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+
9+
export RESOURCE_NAME=mdb
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: 1736786648, i: 9 }),
9+
signature: {
10+
hash: Binary.createFromBase64('oEXuV6w8Ct5J26i/Sqwr8oex8tI=', 0),
11+
keyId: Long('7459441848994496517')
12+
}
13+
},
14+
operationTime: Timestamp({ t: 1736786648, i: 9 })
15+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,103 @@
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_NAMESPACE}.svc.cluster.local"
9+
duration: 240h0m0s
10+
issuerRef:
11+
name: my-ca-issuer
12+
kind: ClusterIssuer
13+
renewBefore: 120h0m0s
14+
secretName: cert-prefix-mdb-sh-cert
15+
usages:
16+
- server auth
17+
- client auth
18+
---
19+
apiVersion: cert-manager.io/v1
20+
kind: Certificate
21+
metadata:
22+
name: mdb-sh-0-cert
23+
spec:
24+
dnsNames:
25+
- "*.${MDB_NAMESPACE}.svc.cluster.local"
26+
duration: 240h0m0s
27+
issuerRef:
28+
name: my-ca-issuer
29+
kind: ClusterIssuer
30+
renewBefore: 120h0m0s
31+
secretName: cert-prefix-mdb-sh-0-cert
32+
usages:
33+
- server auth
34+
- client auth
35+
---
36+
apiVersion: cert-manager.io/v1
37+
kind: Certificate
38+
metadata:
39+
name: mdb-sh-1-cert
40+
spec:
41+
dnsNames:
42+
- "*.${MDB_NAMESPACE}.svc.cluster.local"
43+
duration: 240h0m0s
44+
issuerRef:
45+
name: my-ca-issuer
46+
kind: ClusterIssuer
47+
renewBefore: 120h0m0s
48+
secretName: cert-prefix-mdb-sh-1-cert
49+
usages:
50+
- server auth
51+
- client auth
52+
---
53+
apiVersion: cert-manager.io/v1
54+
kind: Certificate
55+
metadata:
56+
name: mdb-sh-2-cert
57+
spec:
58+
dnsNames:
59+
- "*.${MDB_NAMESPACE}.svc.cluster.local"
60+
duration: 240h0m0s
61+
issuerRef:
62+
name: my-ca-issuer
63+
kind: ClusterIssuer
64+
renewBefore: 120h0m0s
65+
secretName: cert-prefix-mdb-sh-2-cert
66+
usages:
67+
- server auth
68+
- client auth
69+
---
70+
apiVersion: cert-manager.io/v1
71+
kind: Certificate
72+
metadata:
73+
name: mdb-sh-config-cert
74+
spec:
75+
dnsNames:
76+
- "*.${MDB_NAMESPACE}.svc.cluster.local"
77+
duration: 240h0m0s
78+
issuerRef:
79+
name: my-ca-issuer
80+
kind: ClusterIssuer
81+
renewBefore: 120h0m0s
82+
secretName: cert-prefix-mdb-sh-config-cert
83+
usages:
84+
- server auth
85+
- client auth
86+
---
87+
apiVersion: cert-manager.io/v1
88+
kind: Certificate
89+
metadata:
90+
name: mdb-sh-mongos-cert
91+
spec:
92+
dnsNames:
93+
- "*.${MDB_NAMESPACE}.svc.cluster.local"
94+
duration: 240h0m0s
95+
issuerRef:
96+
name: my-ca-issuer
97+
kind: ClusterIssuer
98+
renewBefore: 120h0m0s
99+
secretName: cert-prefix-mdb-sh-mongos-cert
100+
usages:
101+
- server auth
102+
- client auth
103+
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: MongoDB
4+
metadata:
5+
name: ${RESOURCE_NAME}
6+
spec:
7+
shardCount: 3
8+
# we don't specify mongodsPerShardCount, mongosCount and configServerCount as they don't make sense for multi-cluster
9+
topology: MultiCluster
10+
type: ShardedCluster
11+
version: 8.0.3
12+
opsManager:
13+
configMapRef:
14+
name: mdb-org-project-config
15+
credentials: mdb-org-owner-credentials
16+
persistent: true
17+
security:
18+
certsSecretPrefix: cert-prefix
19+
tls:
20+
ca: ca-issuer
21+
authentication:
22+
enabled: true
23+
modes: ["SCRAM"]
24+
mongos:
25+
clusterSpecList:
26+
- clusterName: ${K8S_CLUSTER_0_CONTEXT_NAME}
27+
members: 2
28+
configSrv:
29+
clusterSpecList:
30+
- clusterName: ${K8S_CLUSTER_0_CONTEXT_NAME}
31+
members: 3 # config server will have 3 members in main cluster
32+
- clusterName: ${K8S_CLUSTER_1_CONTEXT_NAME}
33+
members: 1 # config server will have additional non-voting, read-only member in this cluster
34+
memberConfig:
35+
- votes: 0
36+
priority: "0"
37+
shard:
38+
clusterSpecList:
39+
- clusterName: ${K8S_CLUSTER_0_CONTEXT_NAME}
40+
members: 3 # each shard will have 3 members in this cluster
41+
- clusterName: ${K8S_CLUSTER_1_CONTEXT_NAME}
42+
members: 1 # each shard will have additional non-voting, read-only member in this cluster
43+
memberConfig:
44+
- votes: 0
45+
priority: "0"
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 "mdb/${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,47 @@
1+
kubectl apply --context "${K8S_CLUSTER_0_CONTEXT_NAME}" -n "${MDB_NAMESPACE}" -f - <<EOF
2+
apiVersion: mongodb.com/v1
3+
kind: MongoDB
4+
metadata:
5+
name: ${RESOURCE_NAME}
6+
spec:
7+
shardCount: 3
8+
# we don't specify mongodsPerShardCount, mongosCount and configServerCount as they don't make sense for multi-cluster
9+
topology: MultiCluster
10+
type: ShardedCluster
11+
version: 8.0.3
12+
opsManager:
13+
configMapRef:
14+
name: mdb-org-project-config
15+
credentials: mdb-org-owner-credentials
16+
persistent: true
17+
externalAccess: {}
18+
security:
19+
certsSecretPrefix: cert-prefix
20+
tls:
21+
ca: ca-issuer
22+
authentication:
23+
enabled: true
24+
modes: ["SCRAM"]
25+
mongos:
26+
clusterSpecList:
27+
- clusterName: ${K8S_CLUSTER_0_CONTEXT_NAME}
28+
members: 2
29+
configSrv:
30+
clusterSpecList:
31+
- clusterName: ${K8S_CLUSTER_0_CONTEXT_NAME}
32+
members: 3 # config server will have 3 members in main cluster
33+
- clusterName: ${K8S_CLUSTER_1_CONTEXT_NAME}
34+
members: 1 # config server will have additional non-voting, read-only member in this cluster
35+
memberConfig:
36+
- votes: 0
37+
priority: "0"
38+
shard:
39+
clusterSpecList:
40+
- clusterName: ${K8S_CLUSTER_0_CONTEXT_NAME}
41+
members: 3 # each shard will have 3 members in this cluster
42+
- clusterName: ${K8S_CLUSTER_1_CONTEXT_NAME}
43+
members: 1 # each shard will have additional non-voting, read-only member in this cluster
44+
memberConfig:
45+
- votes: 0
46+
priority: "0"
47+
EOF
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: sc-user-password
6+
type: Opaque
7+
stringData:
8+
password: password
9+
---
10+
apiVersion: mongodb.com/v1
11+
kind: MongoDBUser
12+
metadata:
13+
name: sc-user
14+
spec:
15+
passwordSecretKeyRef:
16+
name: sc-user-password
17+
key: password
18+
username: "sc-user"
19+
db: "admin"
20+
mongodbResourceRef:
21+
name: ${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/sc-user
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
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}-mongos-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}-mongos-0-0-svc-external" -o=jsonpath="{.status.loadBalancer.ingress[0].ip}")"
8+
9+
mkdir -p certs
10+
kubectl get --context "${K8S_CLUSTER_0_CONTEXT_NAME}" -n "${MDB_NAMESPACE}" cm/ca-issuer -o=jsonpath='{.data.ca-pem}' > certs/ca.crt
11+
12+
mongosh --host "${external_ip}" --username sc-user --password password --tls --tlsCAFile certs/ca.crt --tlsAllowInvalidHostnames --eval "db.runCommand({connectionStatus : 1})"
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
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+
9+
export RESOURCE_NAME=mdb-sh

0 commit comments

Comments
 (0)