diff --git a/docs/search/04-search-external-mongod/code_snippets/04_0100_install_operator.sh b/docs/search/04-search-external-mongod/code_snippets/04_0100_install_operator.sh index 8ada5bee6..432139353 100644 --- a/docs/search/04-search-external-mongod/code_snippets/04_0100_install_operator.sh +++ b/docs/search/04-search-external-mongod/code_snippets/04_0100_install_operator.sh @@ -2,5 +2,5 @@ helm upgrade --install --debug --kube-context "${K8S_CTX}" \ --create-namespace \ --namespace="${MDB_NS}" \ mongodb-kubernetes \ - --set "${OPERATOR_ADDITIONAL_HELM_VALUES:-"dummy=value"}" \ + ${OPERATOR_ADDITIONAL_HELM_VALUES:+--set ${OPERATOR_ADDITIONAL_HELM_VALUES}} \ "${OPERATOR_HELM_CHART}" diff --git a/docs/search/04-search-external-mongod/code_snippets/04_0110_wait_for_operator_deployment.sh b/docs/search/04-search-external-mongod/code_snippets/04_0110_wait_for_operator_deployment.sh new file mode 100644 index 000000000..1a3a0d82a --- /dev/null +++ b/docs/search/04-search-external-mongod/code_snippets/04_0110_wait_for_operator_deployment.sh @@ -0,0 +1,8 @@ +echo "Waiting for operator deployment to be ready..." +kubectl --context "${K8S_CTX}" -n "${MDB_NS}" rollout status --timeout=2m deployment/mongodb-kubernetes-operator + +echo "Operator deployment in ${MDB_NS} namespace" +kubectl --context "${K8S_CTX}" -n "${MDB_NS}" get deployments + +echo; echo "Operator pod in ${MDB_NS} namespace" +kubectl --context "${K8S_CTX}" -n "${MDB_NS}" get pods -l app=mongodb-kubernetes-operator diff --git a/docs/search/04-search-external-mongod/code_snippets/04_0304_install_cert_manager.sh b/docs/search/04-search-external-mongod/code_snippets/04_0304_install_cert_manager.sh new file mode 100644 index 000000000..0e92edf54 --- /dev/null +++ b/docs/search/04-search-external-mongod/code_snippets/04_0304_install_cert_manager.sh @@ -0,0 +1,15 @@ +helm upgrade --install \ + cert-manager \ + oci://quay.io/jetstack/charts/cert-manager \ + --kube-context "${K8S_CTX}" \ + --namespace "${CERT_MANAGER_NAMESPACE}" \ + --create-namespace \ + --set crds.enabled=true + +for deployment in cert-manager cert-manager-cainjector cert-manager-webhook; do + kubectl --context "${K8S_CTX}" \ + -n "${CERT_MANAGER_NAMESPACE}" \ + wait --for=condition=Available "deployment/${deployment}" --timeout=300s +done + +echo "cert-manager is ready in namespace ${CERT_MANAGER_NAMESPACE}." diff --git a/docs/search/04-search-external-mongod/code_snippets/04_0305_create_mongodb_community_user_secrets.sh b/docs/search/04-search-external-mongod/code_snippets/04_0305_create_mongodb_community_user_secrets.sh index f04439134..80b655277 100644 --- a/docs/search/04-search-external-mongod/code_snippets/04_0305_create_mongodb_community_user_secrets.sh +++ b/docs/search/04-search-external-mongod/code_snippets/04_0305_create_mongodb_community_user_secrets.sh @@ -1,11 +1,16 @@ -kubectl --context "${K8S_CTX}" --namespace "${MDB_NS}" \ - create secret generic mdb-admin-user-password \ - --from-literal=password="${MDB_ADMIN_USER_PASSWORD}" +# Create admin user secret +kubectl create secret generic mdb-admin-user-password \ + --from-literal=password="${MDB_ADMIN_USER_PASSWORD}" \ + --dry-run=client -o yaml | kubectl apply --context "${K8S_CTX}" --namespace "${MDB_NS}" -f - -kubectl --context "${K8S_CTX}" --namespace "${MDB_NS}" \ - create secret generic mdbc-rs-search-sync-source-password \ - --from-literal=password="${MDB_SEARCH_SYNC_USER_PASSWORD}" +# Create search sync source user secret +kubectl create secret generic "${MDB_RESOURCE_NAME}-search-sync-source-password" \ + --from-literal=password="${MDB_SEARCH_SYNC_USER_PASSWORD}" \ + --dry-run=client -o yaml | kubectl apply --context "${K8S_CTX}" --namespace "${MDB_NS}" -f - -kubectl --context "${K8S_CTX}" --namespace "${MDB_NS}" \ - create secret generic mdb-user-password \ - --from-literal=password="${MDB_USER_PASSWORD}" +# Create regular user secret +kubectl create secret generic mdb-user-password \ + --from-literal=password="${MDB_USER_PASSWORD}" \ + --dry-run=client -o yaml | kubectl apply --context "${K8S_CTX}" --namespace "${MDB_NS}" -f - + +echo "User secrets created." diff --git a/docs/search/04-search-external-mongod/code_snippets/04_0306_prepare_cert_manager_issuer.sh b/docs/search/04-search-external-mongod/code_snippets/04_0306_prepare_cert_manager_issuer.sh new file mode 100644 index 000000000..37a20b3e1 --- /dev/null +++ b/docs/search/04-search-external-mongod/code_snippets/04_0306_prepare_cert_manager_issuer.sh @@ -0,0 +1,59 @@ +# 1. Self-signed bootstrap issuer +kubectl apply --context "${K8S_CTX}" -f - <&2; exit 1; } +printf '%s' "${ca_b64}" | base64 --decode > "${TMP_CA_CERT}" + +# Create ConfigMap (MongoDBCommunity) and Secret (external search source) containing CA +kubectl --context "${K8S_CTX}" create configmap "${MDB_TLS_CA_CONFIGMAP}" -n "${MDB_NS}" \ + --from-file=ca-pem="${TMP_CA_CERT}" --from-file=mms-ca.crt="${TMP_CA_CERT}" --from-file=ca.crt="${TMP_CA_CERT}" \ + --dry-run=client -o yaml | kubectl --context "${K8S_CTX}" apply -f - + +kubectl --context "${K8S_CTX}" create secret generic "${MDB_TLS_CA_SECRET_NAME}" -n "${MDB_NS}" \ + --from-file=ca.crt="${TMP_CA_CERT}" \ + --dry-run=client -o yaml | kubectl --context "${K8S_CTX}" apply -f - + +echo "CA issuer and artifacts prepared (ConfigMap: ${MDB_TLS_CA_CONFIGMAP}, Secret: ${MDB_TLS_CA_SECRET_NAME})." diff --git a/docs/search/04-search-external-mongod/code_snippets/04_0307_issue_tls_certificates.sh b/docs/search/04-search-external-mongod/code_snippets/04_0307_issue_tls_certificates.sh new file mode 100644 index 000000000..32de13830 --- /dev/null +++ b/docs/search/04-search-external-mongod/code_snippets/04_0307_issue_tls_certificates.sh @@ -0,0 +1,70 @@ +# Issue server and search certificates +server_certificate="${MDB_RESOURCE_NAME}-server-tls" +search_certificate="${MDB_RESOURCE_NAME}-search-tls" + +# DNS names for MongoDB server certificate +mongo_dns_names=() +[[ -n "${MDB_EXTERNAL_HOST_0:-}" ]] && mongo_dns_names+=("${MDB_EXTERNAL_HOST_0%%:*}") +[[ -n "${MDB_EXTERNAL_HOST_1:-}" ]] && mongo_dns_names+=("${MDB_EXTERNAL_HOST_1%%:*}") +[[ -n "${MDB_EXTERNAL_HOST_2:-}" ]] && mongo_dns_names+=("${MDB_EXTERNAL_HOST_2%%:*}") +mongo_dns_names+=("${MDB_RESOURCE_NAME}-svc.${MDB_NS}.svc.cluster.local" "*.${MDB_RESOURCE_NAME}-svc.${MDB_NS}.svc.cluster.local") +[[ ${#mongo_dns_names[@]} -gt 0 ]] || { echo "No MongoDB DNS names generated; set MDB_EXTERNAL_HOST_* vars" >&2; exit 1; } + +# DNS names for MongoDB Search certificate +search_dns_names=( + "${MDB_SEARCH_SERVICE_NAME}" + "${MDB_SEARCH_SERVICE_NAME}.${MDB_NS}.svc.cluster.local" + "${MDB_SEARCH_SERVICE_NAME}-search-svc.${MDB_NS}.svc.cluster.local" + "*.${MDB_SEARCH_SERVICE_NAME}-search-svc.${MDB_NS}.svc.cluster.local" +) +[[ -n "${MDB_SEARCH_HOSTNAME}" ]] && search_dns_names+=("${MDB_SEARCH_HOSTNAME}") + +mongo_dns_block="$(printf ' - "%s"\n' "${mongo_dns_names[@]}")" +search_dns_block="$(printf ' - "%s"\n' "${search_dns_names[@]}")" + +kubectl apply --context "${K8S_CTX}" -n "${MDB_NS}" -f - <