feat: Add nginx-nodeport example with comprehensive documentation and security comparison
This commit is contained in:
125
scripts/fetch-ip.sh
Executable file
125
scripts/fetch-ip.sh
Executable file
@@ -0,0 +1,125 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Simple Mycelium IPv6 Address Fetcher with Master/Worker Categorization
|
||||
# This script processes kubectl output to categorize Mycelium IPv6 addresses by node role
|
||||
|
||||
set -e
|
||||
|
||||
echo "🔍 Discovering Mycelium IPv6 addresses by node role..."
|
||||
|
||||
# Check if kubectl is available
|
||||
if ! command -v kubectl &> /dev/null; then
|
||||
echo "❌ kubectl command not found. Please ensure kubectl is installed and configured."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "📡 Connected to cluster"
|
||||
|
||||
# Arrays to store IPs
|
||||
master_ips=()
|
||||
worker_ips=()
|
||||
|
||||
# Get node metadata for role detection
|
||||
declare -A node_roles
|
||||
while IFS= read -r node_line; do
|
||||
if [ -z "$node_line" ]; then
|
||||
continue
|
||||
fi
|
||||
|
||||
node_name=$(echo "$node_line" | awk '{print $1}')
|
||||
|
||||
# Check if this is a master node by name
|
||||
if echo "$node_name" | grep -qE '(master|control-plane)'; then
|
||||
node_roles["$node_name"]="master"
|
||||
else
|
||||
node_roles["$node_name"]="worker"
|
||||
fi
|
||||
done < <(kubectl get nodes -o jsonpath='{.items[*].metadata.name}' | tr ' ' '\n')
|
||||
|
||||
echo "🔎 Processing cluster nodes..."
|
||||
|
||||
# Process the specific kubectl output
|
||||
current_node=""
|
||||
while IFS= read -r line; do
|
||||
# Skip empty lines
|
||||
if [ -z "$line" ]; then
|
||||
continue
|
||||
fi
|
||||
|
||||
# Check if this line has a tab (node name + IP)
|
||||
if echo "$line" | grep -q $'\t'; then
|
||||
current_node=$(echo "$line" | cut -f1)
|
||||
|
||||
# Check if this is a Mycelium IPv6 address
|
||||
ip_address=$(echo "$line" | cut -f2)
|
||||
if echo "$ip_address" | grep -qE '^[0-9a-f]+:[0-9a-f]+:[0-9a-f]+:[0-9a-f]+:[0-9a-f]+:[0-9a-f]+:[0-9a-f]+:[0-9a-f]+$'; then
|
||||
if [ "${node_roles[$current_node]}" = "master" ]; then
|
||||
master_ips+=("$ip_address")
|
||||
echo " 🔧 MASTER: $ip_address"
|
||||
else
|
||||
worker_ips+=("$ip_address")
|
||||
echo " ⚙️ WORKER: $ip_address"
|
||||
fi
|
||||
fi
|
||||
else
|
||||
# This is a Mycelium IPv6 address on its own line
|
||||
if echo "$line" | grep -qE '^[0-9a-f]+:[0-9a-f]+:[0-9a-f]+:[0-9a-f]+:[0-9a-f]+:[0-9a-f]+:[0-9a-f]+:[0-9a-f]+$'; then
|
||||
if [ "${node_roles[$current_node]}" = "master" ]; then
|
||||
master_ips+=("$line")
|
||||
echo " 🔧 MASTER: $line"
|
||||
else
|
||||
worker_ips+=("$line")
|
||||
echo " ⚙️ WORKER: $line"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
done < <(kubectl get nodes -o jsonpath='{range .items[*]}{.metadata.name}{"\t"}{range .status.addresses[?(@.type=="InternalIP")]}{.address}{"\n"}{end}{end}' | head -10)
|
||||
|
||||
echo ""
|
||||
echo "📊 Results Summary:"
|
||||
echo "=================="
|
||||
|
||||
# Display Master IPs
|
||||
if [ ${#master_ips[@]} -gt 0 ]; then
|
||||
echo ""
|
||||
echo "🔧 MASTER NODES (${#master_ips[@]} found):"
|
||||
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
||||
for ip in "${master_ips[@]}"; do
|
||||
echo " $ip"
|
||||
done
|
||||
else
|
||||
echo ""
|
||||
echo "⚠️ No master nodes found with Mycelium IPv6 addresses"
|
||||
fi
|
||||
|
||||
# Display Worker IPs
|
||||
if [ ${#worker_ips[@]} -gt 0 ]; then
|
||||
echo ""
|
||||
echo "⚙️ WORKER NODES (${#worker_ips[@]} found):"
|
||||
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
||||
for ip in "${worker_ips[@]}"; do
|
||||
echo " $ip"
|
||||
done
|
||||
else
|
||||
echo ""
|
||||
echo "⚠️ No worker nodes found with Mycelium IPv6 addresses"
|
||||
fi
|
||||
|
||||
# Final summary
|
||||
echo ""
|
||||
echo "📈 TOTAL SUMMARY:"
|
||||
echo "================="
|
||||
total_found=$((${#master_ips[@]} + ${#worker_ips[@]}))
|
||||
echo "Total Mycelium IPv6 addresses found: $total_found"
|
||||
echo " - Master nodes: ${#master_ips[@]}"
|
||||
echo " - Worker nodes: ${#worker_ips[@]}"
|
||||
|
||||
# Exit with error if no IPs found
|
||||
if [ $total_found -eq 0 ]; then
|
||||
echo ""
|
||||
echo "❌ No Mycelium IPv6 addresses found in the cluster!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo "✅ Mycelium IPv6 address discovery completed successfully!"
|
||||
Reference in New Issue
Block a user