Skip to content

Commit c608056

Browse files
Kubernetes Enterprise Operator Release 1.32.0 (#304)
1 parent 4c709e6 commit c608056

File tree

156 files changed

+4873
-171
lines changed

Some content is hidden

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

156 files changed

+4873
-171
lines changed

.evergreen.yml

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ variables:
22
- &go_env
33
XDG_CONFIG_HOME: ${go_base_path}${workdir}
44
GO111MODULE: "on"
5-
GOROOT: "/opt/golang/go1.23"
5+
GOROOT: "/opt/golang/go1.24"
66
functions:
77
"clone":
88
- command: subprocess.exec
@@ -34,7 +34,7 @@ functions:
3434
- notary_service_url
3535
script: |
3636
set -Eeu pipefail
37-
37+
3838
curl "${notary_service_url}" --output macos-notary.zip
3939
unzip -u macos-notary.zip
4040
chmod 755 ./linux_amd64/macnotary
@@ -72,14 +72,14 @@ functions:
7272
7373
tasks:
7474
- name: package_goreleaser
75-
allowed_requesters: [ "patch", "github_tag" ]
75+
allowed_requesters: ["patch", "github_tag"]
7676
tags: ["packaging"]
7777
commands:
7878
- func: "clone"
7979
- func: "install goreleaser"
8080
- func: "install macos notarization service"
8181
- func: "release"
82-
# add a noop task because if the only task in a variant is git_tag_only: true Evergreen doesn't start it at all
82+
# add a noop task because if the only task in a variant is git_tag_only: true Evergreen doesn't start it at all
8383
- name: noop
8484
commands:
8585
- command: shell.exec
@@ -88,11 +88,11 @@ tasks:
8888
script: echo "this is the noop task"
8989

9090
buildvariants:
91-
# This variant is run when a new tag is out similar to github actions.
92-
- name: release_mcli
93-
display_name: Release Go multi-cluster binary
94-
run_on:
95-
- ubuntu2204-small
96-
tasks:
97-
- name: package_goreleaser
98-
- name: noop
91+
# This variant is run when a new tag is out similar to github actions.
92+
- name: release_mcli
93+
display_name: Release Go multi-cluster binary
94+
run_on:
95+
- ubuntu2204-small
96+
tasks:
97+
- name: package_goreleaser
98+
- name: noop
Lines changed: 18 additions & 0 deletions
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
Lines changed: 30 additions & 0 deletions
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
Lines changed: 27 additions & 0 deletions
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
Lines changed: 12 additions & 0 deletions
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})"
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
Lines changed: 15 additions & 0 deletions
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+
}
Lines changed: 22 additions & 0 deletions
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
Lines changed: 103 additions & 0 deletions
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

0 commit comments

Comments
 (0)