Skip to content

Commit 5773492

Browse files
Added support script
1 parent 886c1d9 commit 5773492

1 file changed

Lines changed: 108 additions & 0 deletions

File tree

scripts/support.sh

Lines changed: 108 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,108 @@
1+
#!/bin/bash
2+
3+
#==============================================================================
4+
# MariaDB Enterpries Operator Data Collection Script
5+
# Dependencies:
6+
# - kubectl
7+
# - Relevant permissions for MariaDB Namespace and Enterprise Operator Namespace
8+
#==============================================================================
9+
10+
usage() {
11+
echo "Usage: $0 <mariadb-namespace> <operator-namespace>"
12+
echo
13+
echo "Arguments:"
14+
echo " <mariadb-namespace> : The namespace where MariaDB resources are deployed."
15+
echo " <operator-namespace> : The namespace where the MariaDB Enterprise Operator is running."
16+
echo
17+
echo "Example:"
18+
echo " $0 my-app-namespace mariadb-enterprise-operator-system"
19+
echo
20+
echo "Tips:"
21+
echo " - The following script can be used for community as well as enterprise"
22+
exit 1
23+
}
24+
25+
if [ "$#" -ne 2 ]; then
26+
echo "Error: Incorrect number of arguments."
27+
usage
28+
fi
29+
30+
MARIADB_NAMESPACE=$1
31+
OPERATOR_NAMESPACE=$2
32+
SUPPORT_DIR="mariadb_support_$(date +%Y-%m-%d_%H-%M-%S)"
33+
ARCHIVE_NAME="${SUPPORT_DIR}.tar.gz"
34+
35+
mkdir -p "$SUPPORT_DIR"
36+
37+
echo "Starting MariaDB Operator Data Collection..."
38+
echo "Log files will be saved in: $SUPPORT_DIR"
39+
echo "Target MariaDB Namespace: $MARIADB_NAMESPACE"
40+
echo "Target Operator Namespace: $OPERATOR_NAMESPACE"
41+
echo "----------------------------------------------------------------------"
42+
43+
echo "[1/5] Collecting current namespace state (all resources)..."
44+
kubectl get all -n "$MARIADB_NAMESPACE" > "${SUPPORT_DIR}/${MARIADB_NAMESPACE}_all.log"
45+
46+
echo "[2/5] Collecting logs from all pods and containers in '$MARIADB_NAMESPACE'..."
47+
for p in $(kubectl get pods -n "$MARIADB_NAMESPACE" -o name); do
48+
for c in $(kubectl get "$p" -n "$MARIADB_NAMESPACE" -o jsonpath='{.spec.containers[*].name}'); do
49+
# Strip the 'pod/' prefix for a cleaner filename
50+
pod_name=$(echo "$p" | sed 's#pod/##')
51+
kubectl logs "$p" -c "$c" -n "$MARIADB_NAMESPACE" > "${SUPPORT_DIR}/${MARIADB_NAMESPACE}-${pod_name}-${c}.log"
52+
done
53+
done
54+
55+
echo "[3/5] Extracting Kubernetes events sorted by creation timestamp..."
56+
kubectl get events --sort-by='.metadata.creationTimestamp' -n "$MARIADB_NAMESPACE" > "${SUPPORT_DIR}/${MARIADB_NAMESPACE}_events.log"
57+
58+
echo "[4/5] Extracting Custom Resources..."
59+
kubectl get mariadb -o yaml -n "$MARIADB_NAMESPACE" > "${SUPPORT_DIR}/${MARIADB_NAMESPACE}_mariadbs.yaml" 2>/dev/null || echo " -> No MariaDB custom resources found."
60+
kubectl get maxscale -o yaml -n "$MARIADB_NAMESPACE" > "${SUPPORT_DIR}/${MARIADB_NAMESPACE}_maxscales.yaml" 2>/dev/null || echo " -> No MaxScale custom resources found."
61+
kubectl get backup -o yaml -n "$MARIADB_NAMESPACE" > "${SUPPORT_DIR}/${MARIADB_NAMESPACE}_backups.yaml" 2>/dev/null || echo " -> No Backup custom resources found."
62+
kubectl get physicalbackup -o yaml -n "$MARIADB_NAMESPACE" > "${SUPPORT_DIR}/${MARIADB_NAMESPACE}_physicalbackups.yaml" 2>/dev/null || echo " -> No PhysicalBackup custom resources found."
63+
kubectl get pitr -o yaml -n "$MARIADB_NAMESPACE" > "${SUPPORT_DIR}/${MARIADB_NAMESPACE}_pitrs.yaml" 2>/dev/null || echo " -> No PointInTimeRecovery custom resources found."
64+
65+
echo "[5/5] Extracting Operator logs from '$OPERATOR_NAMESPACE'..."
66+
kubectl get deployments -n "$OPERATOR_NAMESPACE"
67+
read -p "Please enter the Deployment name for the MariaDB Enterprise Operator from the list above [mariadb-enterprise-operator]: " OPERATOR_DEPLOY_NAME
68+
OPERATOR_DEPLOY_NAME=${OPERATOR_DEPLOY_NAME:-mariadb-enterprise-operator}
69+
kubectl logs deployment/${OPERATOR_DEPLOY_NAME} -n "$OPERATOR_NAMESPACE" > "${SUPPORT_DIR}/${OPERATOR_NAMESPACE}_operator.log" 2>/dev/null || echo " -> Operator deployment logs not found in $OPERATOR_NAMESPACE."
70+
71+
echo "----------------------------------------------------------------------"
72+
echo "📋 Please provide the following environment details:"
73+
read -p "Kubernetes version: " K8S_VERSION
74+
read -p "Kubernetes distribution (Vanilla, OpenShift, EKS, GKE, AKS, etc.): " K8S_DISTRO
75+
read -p "MariaDB Operator version: " OPERATOR_VERSION
76+
read -p "MariaDB Server version: " MARIADB_VERSION
77+
read -p "MariaDB topology (Replication, Galera, Standalone): " MARIADB_TOPOLOGY
78+
read -p "MaxScale version: " MAXSCALE_VERSION
79+
read -p "Install method (Helm, OLM): " INSTALL_METHOD
80+
read -p "Air-Gapped (Yes, No): " AIR_GAPPED
81+
if [[ "${K8S_DISTRO,,}" == "openshift" ]]; then
82+
read -p "(Optional) OpenShift version: " OCP_VERSION
83+
read -p "(Optional) OpenShift channel: " OCP_CHANNEL
84+
fi
85+
86+
cat <<EOF > "${SUPPORT_DIR}/environment_details.txt"
87+
Kubernetes version: ${K8S_VERSION:-"Not provided"}
88+
Kubernetes distribution: ${K8S_DISTRO:-"Not provided"}
89+
MariaDB Operator version: ${OPERATOR_VERSION:-"Not provided"}
90+
MariaDB Server version: ${MARIADB_VERSION:-"Not provided"}
91+
MariaDB topology: ${MARIADB_TOPOLOGY:-"Not provided"}
92+
MaxScale version: ${MAXSCALE_VERSION:-"Not provided"}
93+
Install method: ${INSTALL_METHOD:-"Not provided"}
94+
Air-Gapped: ${AIR_GAPPED:-"Not provided"}
95+
(Optional) OpenShift version: ${OCP_VERSION:-"Not provided"}
96+
(Optional) OpenShift channel: ${OCP_CHANNEL:-"Not provided"}
97+
EOF
98+
99+
echo "----------------------------------------------------------------------"
100+
echo "📦 Creating archive: ${ARCHIVE_NAME}..."
101+
tar -czf "${ARCHIVE_NAME}" "${SUPPORT_DIR}"
102+
103+
echo "🧹 Cleaning up temporary directory..."
104+
rm -rf "${SUPPORT_DIR}"
105+
106+
echo "----------------------------------------------------------------------"
107+
echo "✅ Data collection complete!"
108+
echo "======================================================================"

0 commit comments

Comments
 (0)