首次提交:初始化项目
This commit is contained in:
84
004-scripts/cluster-management/check-node-health.sh
Executable file
84
004-scripts/cluster-management/check-node-health.sh
Executable file
@@ -0,0 +1,84 @@
|
||||
#!/bin/bash
|
||||
#
|
||||
# 节点健康检查脚本
|
||||
# 使用方法: bash check-node-health.sh
|
||||
#
|
||||
|
||||
# 颜色输出
|
||||
RED='\033[0;31m'
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
BLUE='\033[0;34m'
|
||||
NC='\033[0m' # No Color
|
||||
|
||||
echo -e "${BLUE}================================${NC}"
|
||||
echo -e "${BLUE}K3s 集群健康检查${NC}"
|
||||
echo -e "${BLUE}================================${NC}"
|
||||
echo ""
|
||||
|
||||
# 1. 检查节点状态
|
||||
echo -e "${YELLOW}[1/8] 检查节点状态...${NC}"
|
||||
kubectl get nodes -o wide
|
||||
echo ""
|
||||
|
||||
# 2. 检查节点资源
|
||||
echo -e "${YELLOW}[2/8] 检查节点资源使用...${NC}"
|
||||
kubectl top nodes 2>/dev/null || echo -e "${YELLOW}⚠ metrics-server 未就绪${NC}"
|
||||
echo ""
|
||||
|
||||
# 3. 检查系统 Pods
|
||||
echo -e "${YELLOW}[3/8] 检查系统组件...${NC}"
|
||||
kubectl get pods -n kube-system
|
||||
echo ""
|
||||
|
||||
# 4. 检查 Longhorn
|
||||
echo -e "${YELLOW}[4/8] 检查 Longhorn 存储...${NC}"
|
||||
kubectl get pods -n longhorn-system | head -10
|
||||
echo ""
|
||||
|
||||
# 5. 检查 PVC
|
||||
echo -e "${YELLOW}[5/8] 检查持久化存储卷...${NC}"
|
||||
kubectl get pvc -A
|
||||
echo ""
|
||||
|
||||
# 6. 检查应用 Pods
|
||||
echo -e "${YELLOW}[6/8] 检查应用 Pods...${NC}"
|
||||
kubectl get pods -A | grep -v "kube-system\|longhorn-system\|cert-manager" | head -20
|
||||
echo ""
|
||||
|
||||
# 7. 检查 Ingress
|
||||
echo -e "${YELLOW}[7/8] 检查 Ingress 配置...${NC}"
|
||||
kubectl get ingress -A
|
||||
echo ""
|
||||
|
||||
# 8. 检查证书
|
||||
echo -e "${YELLOW}[8/8] 检查 SSL 证书...${NC}"
|
||||
kubectl get certificate -A
|
||||
echo ""
|
||||
|
||||
# 统计信息
|
||||
echo -e "${BLUE}================================${NC}"
|
||||
echo -e "${BLUE}集群统计信息${NC}"
|
||||
echo -e "${BLUE}================================${NC}"
|
||||
|
||||
TOTAL_NODES=$(kubectl get nodes --no-headers | wc -l)
|
||||
READY_NODES=$(kubectl get nodes --no-headers | grep " Ready " | wc -l)
|
||||
TOTAL_PODS=$(kubectl get pods -A --no-headers | wc -l)
|
||||
RUNNING_PODS=$(kubectl get pods -A --no-headers | grep "Running" | wc -l)
|
||||
TOTAL_PVC=$(kubectl get pvc -A --no-headers | wc -l)
|
||||
BOUND_PVC=$(kubectl get pvc -A --no-headers | grep "Bound" | wc -l)
|
||||
|
||||
echo -e "节点总数: ${GREEN}${TOTAL_NODES}${NC} (就绪: ${GREEN}${READY_NODES}${NC})"
|
||||
echo -e "Pod 总数: ${GREEN}${TOTAL_PODS}${NC} (运行中: ${GREEN}${RUNNING_PODS}${NC})"
|
||||
echo -e "PVC 总数: ${GREEN}${TOTAL_PVC}${NC} (已绑定: ${GREEN}${BOUND_PVC}${NC})"
|
||||
echo ""
|
||||
|
||||
# 健康评分
|
||||
if [ $READY_NODES -eq $TOTAL_NODES ] && [ $RUNNING_PODS -gt $((TOTAL_PODS * 80 / 100)) ]; then
|
||||
echo -e "${GREEN}✓ 集群健康状态: 良好${NC}"
|
||||
elif [ $READY_NODES -gt $((TOTAL_NODES / 2)) ]; then
|
||||
echo -e "${YELLOW}⚠ 集群健康状态: 一般${NC}"
|
||||
else
|
||||
echo -e "${RED}✗ 集群健康状态: 异常${NC}"
|
||||
fi
|
||||
echo ""
|
||||
113
004-scripts/cluster-management/generate-join-script.sh
Executable file
113
004-scripts/cluster-management/generate-join-script.sh
Executable file
@@ -0,0 +1,113 @@
|
||||
#!/bin/bash
|
||||
#
|
||||
# 快速配置脚本生成器
|
||||
# 为新节点生成定制化的加入脚本
|
||||
#
|
||||
|
||||
# 颜色输出
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
NC='\033[0m'
|
||||
|
||||
echo -e "${GREEN}================================${NC}"
|
||||
echo -e "${GREEN}K3s 节点加入脚本生成器${NC}"
|
||||
echo -e "${GREEN}================================${NC}"
|
||||
echo ""
|
||||
|
||||
# 获取当前配置
|
||||
MASTER_IP="134.195.210.237"
|
||||
NODE_TOKEN="K109d35a131f48b4d40b162398a828b766d60735f29dd7b4a37b030c1d1c0e26b23::server:72e04c3a9e3e762cbdefffc96f348a2d"
|
||||
|
||||
echo -e "${YELLOW}当前 Master 节点信息:${NC}"
|
||||
echo "IP: $MASTER_IP"
|
||||
echo "Token: ${NODE_TOKEN:0:20}..."
|
||||
echo ""
|
||||
|
||||
# 选择节点类型
|
||||
echo "请选择要加入的节点类型:"
|
||||
echo "1) Worker 节点 (推荐用于 2 节点方案)"
|
||||
echo "2) Master 节点 (用于 HA 高可用方案)"
|
||||
echo ""
|
||||
read -p "请输入选项 (1 或 2): " NODE_TYPE
|
||||
|
||||
if [ "$NODE_TYPE" == "1" ]; then
|
||||
SCRIPT_NAME="join-worker-custom.sh"
|
||||
echo ""
|
||||
echo -e "${GREEN}生成 Worker 节点加入脚本...${NC}"
|
||||
|
||||
cat > $SCRIPT_NAME << 'EOFWORKER'
|
||||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
# 配置信息
|
||||
MASTER_IP="134.195.210.237"
|
||||
NODE_TOKEN="K109d35a131f48b4d40b162398a828b766d60735f29dd7b4a37b030c1d1c0e26b23::server:72e04c3a9e3e762cbdefffc96f348a2d"
|
||||
|
||||
echo "开始加入 Worker 节点..."
|
||||
|
||||
# 系统准备
|
||||
swapoff -a
|
||||
sed -i '/ swap / s/^/#/' /etc/fstab
|
||||
apt-get update -qq
|
||||
apt-get install -y curl open-iscsi nfs-common
|
||||
systemctl enable --now iscsid
|
||||
|
||||
# 安装 k3s agent
|
||||
curl -sfL https://get.k3s.io | K3S_URL=https://${MASTER_IP}:6443 \
|
||||
K3S_TOKEN=${NODE_TOKEN} sh -
|
||||
|
||||
echo "Worker 节点加入完成!"
|
||||
echo "在 Master 节点执行: kubectl get nodes"
|
||||
EOFWORKER
|
||||
|
||||
chmod +x $SCRIPT_NAME
|
||||
|
||||
elif [ "$NODE_TYPE" == "2" ]; then
|
||||
SCRIPT_NAME="join-master-custom.sh"
|
||||
echo ""
|
||||
read -p "请输入负载均衡器 IP: " LB_IP
|
||||
|
||||
echo -e "${GREEN}生成 Master 节点加入脚本...${NC}"
|
||||
|
||||
cat > $SCRIPT_NAME << EOFMASTER
|
||||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
# 配置信息
|
||||
FIRST_MASTER_IP="134.195.210.237"
|
||||
LB_IP="$LB_IP"
|
||||
NODE_TOKEN="K109d35a131f48b4d40b162398a828b766d60735f29dd7b4a37b030c1d1c0e26b23::server:72e04c3a9e3e762cbdefffc96f348a2d"
|
||||
|
||||
echo "开始加入 Master 节点 (HA 模式)..."
|
||||
|
||||
# 系统准备
|
||||
swapoff -a
|
||||
sed -i '/ swap / s/^/#/' /etc/fstab
|
||||
apt-get update -qq
|
||||
apt-get install -y curl open-iscsi nfs-common
|
||||
systemctl enable --now iscsid
|
||||
|
||||
# 安装 k3s server
|
||||
curl -sfL https://get.k3s.io | sh -s - server \\
|
||||
--server https://\${FIRST_MASTER_IP}:6443 \\
|
||||
--token \${NODE_TOKEN} \\
|
||||
--tls-san=\${LB_IP} \\
|
||||
--write-kubeconfig-mode 644
|
||||
|
||||
echo "Master 节点加入完成!"
|
||||
echo "在任意 Master 节点执行: kubectl get nodes"
|
||||
EOFMASTER
|
||||
|
||||
chmod +x $SCRIPT_NAME
|
||||
else
|
||||
echo "无效的选项"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo -e "${GREEN}✓ 脚本已生成: $SCRIPT_NAME${NC}"
|
||||
echo ""
|
||||
echo "使用方法:"
|
||||
echo "1. 将脚本复制到新节点"
|
||||
echo "2. 在新节点上执行: sudo bash $SCRIPT_NAME"
|
||||
echo ""
|
||||
137
004-scripts/cluster-management/join-master.sh
Executable file
137
004-scripts/cluster-management/join-master.sh
Executable file
@@ -0,0 +1,137 @@
|
||||
#!/bin/bash
|
||||
#
|
||||
# K3s Master 节点快速加入脚本 (用于 HA 集群)
|
||||
# 使用方法: sudo bash join-master.sh
|
||||
#
|
||||
|
||||
set -e
|
||||
|
||||
# 颜色输出
|
||||
RED='\033[0;31m'
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
NC='\033[0m' # No Color
|
||||
|
||||
echo -e "${GREEN}================================${NC}"
|
||||
echo -e "${GREEN}K3s Master 节点加入脚本 (HA)${NC}"
|
||||
echo -e "${GREEN}================================${NC}"
|
||||
echo ""
|
||||
|
||||
# 检查是否为 root
|
||||
if [ "$EUID" -ne 0 ]; then
|
||||
echo -e "${RED}错误: 请使用 sudo 运行此脚本${NC}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 配置信息
|
||||
FIRST_MASTER_IP="134.195.210.237"
|
||||
NODE_TOKEN="K109d35a131f48b4d40b162398a828b766d60735f29dd7b4a37b030c1d1c0e26b23::server:72e04c3a9e3e762cbdefffc96f348a2d"
|
||||
|
||||
echo -e "${YELLOW}第一个 Master 节点 IP: ${FIRST_MASTER_IP}${NC}"
|
||||
echo ""
|
||||
|
||||
# 获取负载均衡器 IP
|
||||
read -p "请输入负载均衡器 IP 地址: " LB_IP
|
||||
if [ -z "$LB_IP" ]; then
|
||||
echo -e "${RED}错误: 负载均衡器 IP 不能为空${NC}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo -e "${YELLOW}负载均衡器 IP: ${LB_IP}${NC}"
|
||||
echo ""
|
||||
|
||||
# 1. 检查网络连通性
|
||||
echo -e "${YELLOW}[1/6] 检查网络连通性...${NC}"
|
||||
if ping -c 2 ${FIRST_MASTER_IP} > /dev/null 2>&1; then
|
||||
echo -e "${GREEN}✓ 可以连接到第一个 Master 节点${NC}"
|
||||
else
|
||||
echo -e "${RED}✗ 无法连接到第一个 Master 节点 ${FIRST_MASTER_IP}${NC}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if ping -c 2 ${LB_IP} > /dev/null 2>&1; then
|
||||
echo -e "${GREEN}✓ 可以连接到负载均衡器${NC}"
|
||||
else
|
||||
echo -e "${RED}✗ 无法连接到负载均衡器 ${LB_IP}${NC}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 2. 检查端口
|
||||
echo -e "${YELLOW}[2/6] 检查端口...${NC}"
|
||||
if timeout 5 bash -c "cat < /dev/null > /dev/tcp/${FIRST_MASTER_IP}/6443" 2>/dev/null; then
|
||||
echo -e "${GREEN}✓ Master 节点端口 6443 可访问${NC}"
|
||||
else
|
||||
echo -e "${RED}✗ Master 节点端口 6443 无法访问${NC}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 3. 系统准备
|
||||
echo -e "${YELLOW}[3/6] 准备系统环境...${NC}"
|
||||
|
||||
# 禁用 swap
|
||||
swapoff -a
|
||||
sed -i '/ swap / s/^/#/' /etc/fstab
|
||||
echo -e "${GREEN}✓ 已禁用 swap${NC}"
|
||||
|
||||
# 安装依赖
|
||||
apt-get update -qq
|
||||
apt-get install -y curl open-iscsi nfs-common > /dev/null 2>&1
|
||||
systemctl enable --now iscsid > /dev/null 2>&1
|
||||
echo -e "${GREEN}✓ 已安装必要依赖${NC}"
|
||||
|
||||
# 4. 设置主机名
|
||||
echo -e "${YELLOW}[4/6] 配置主机名...${NC}"
|
||||
read -p "请输入此节点的主机名 (例如: master-2): " HOSTNAME
|
||||
if [ -n "$HOSTNAME" ]; then
|
||||
hostnamectl set-hostname $HOSTNAME
|
||||
echo -e "${GREEN}✓ 主机名已设置为: $HOSTNAME${NC}"
|
||||
else
|
||||
echo -e "${YELLOW}⚠ 跳过主机名设置${NC}"
|
||||
fi
|
||||
|
||||
# 5. 安装 k3s server
|
||||
echo -e "${YELLOW}[5/6] 安装 k3s server (HA 模式)...${NC}"
|
||||
echo -e "${YELLOW}这可能需要几分钟时间...${NC}"
|
||||
|
||||
curl -sfL https://get.k3s.io | sh -s - server \
|
||||
--server https://${FIRST_MASTER_IP}:6443 \
|
||||
--token ${NODE_TOKEN} \
|
||||
--tls-san=${LB_IP} \
|
||||
--write-kubeconfig-mode 644 > /dev/null 2>&1
|
||||
|
||||
if [ $? -eq 0 ]; then
|
||||
echo -e "${GREEN}✓ k3s server 安装成功${NC}"
|
||||
else
|
||||
echo -e "${RED}✗ k3s server 安装失败${NC}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 6. 验证安装
|
||||
echo -e "${YELLOW}[6/6] 验证安装...${NC}"
|
||||
sleep 15
|
||||
|
||||
if systemctl is-active --quiet k3s; then
|
||||
echo -e "${GREEN}✓ k3s 服务运行正常${NC}"
|
||||
else
|
||||
echo -e "${RED}✗ k3s 服务未运行${NC}"
|
||||
echo -e "${YELLOW}查看日志: sudo journalctl -u k3s -f${NC}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo -e "${GREEN}================================${NC}"
|
||||
echo -e "${GREEN}✓ Master 节点加入成功!${NC}"
|
||||
echo -e "${GREEN}================================${NC}"
|
||||
echo ""
|
||||
echo -e "${YELLOW}下一步操作:${NC}"
|
||||
echo -e "1. 在任意 Master 节点执行以下命令查看节点状态:"
|
||||
echo -e " ${GREEN}kubectl get nodes${NC}"
|
||||
echo ""
|
||||
echo -e "2. 检查 etcd 集群状态:"
|
||||
echo -e " ${GREEN}kubectl get pods -n kube-system | grep etcd${NC}"
|
||||
echo ""
|
||||
echo -e "3. 查看节点详细信息:"
|
||||
echo -e " ${GREEN}kubectl describe node $HOSTNAME${NC}"
|
||||
echo ""
|
||||
echo -e "4. 更新负载均衡器配置,添加此节点的 IP"
|
||||
echo ""
|
||||
116
004-scripts/cluster-management/join-worker.sh
Executable file
116
004-scripts/cluster-management/join-worker.sh
Executable file
@@ -0,0 +1,116 @@
|
||||
#!/bin/bash
|
||||
#
|
||||
# K3s Worker 节点快速加入脚本
|
||||
# 使用方法: sudo bash join-worker.sh
|
||||
#
|
||||
|
||||
set -e
|
||||
|
||||
# 颜色输出
|
||||
RED='\033[0;31m'
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
NC='\033[0m' # No Color
|
||||
|
||||
echo -e "${GREEN}================================${NC}"
|
||||
echo -e "${GREEN}K3s Worker 节点加入脚本${NC}"
|
||||
echo -e "${GREEN}================================${NC}"
|
||||
echo ""
|
||||
|
||||
# 检查是否为 root
|
||||
if [ "$EUID" -ne 0 ]; then
|
||||
echo -e "${RED}错误: 请使用 sudo 运行此脚本${NC}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 配置信息
|
||||
MASTER_IP="134.195.210.237"
|
||||
NODE_TOKEN="K109d35a131f48b4d40b162398a828b766d60735f29dd7b4a37b030c1d1c0e26b23::server:72e04c3a9e3e762cbdefffc96f348a2d"
|
||||
|
||||
echo -e "${YELLOW}Master 节点 IP: ${MASTER_IP}${NC}"
|
||||
echo ""
|
||||
|
||||
# 1. 检查网络连通性
|
||||
echo -e "${YELLOW}[1/6] 检查网络连通性...${NC}"
|
||||
if ping -c 2 ${MASTER_IP} > /dev/null 2>&1; then
|
||||
echo -e "${GREEN}✓ 网络连通正常${NC}"
|
||||
else
|
||||
echo -e "${RED}✗ 无法连接到 Master 节点 ${MASTER_IP}${NC}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 2. 检查端口
|
||||
echo -e "${YELLOW}[2/6] 检查 Master 节点端口 6443...${NC}"
|
||||
if timeout 5 bash -c "cat < /dev/null > /dev/tcp/${MASTER_IP}/6443" 2>/dev/null; then
|
||||
echo -e "${GREEN}✓ 端口 6443 可访问${NC}"
|
||||
else
|
||||
echo -e "${RED}✗ 端口 6443 无法访问,请检查防火墙${NC}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 3. 系统准备
|
||||
echo -e "${YELLOW}[3/6] 准备系统环境...${NC}"
|
||||
|
||||
# 禁用 swap
|
||||
swapoff -a
|
||||
sed -i '/ swap / s/^/#/' /etc/fstab
|
||||
echo -e "${GREEN}✓ 已禁用 swap${NC}"
|
||||
|
||||
# 安装依赖
|
||||
apt-get update -qq
|
||||
apt-get install -y curl open-iscsi nfs-common > /dev/null 2>&1
|
||||
systemctl enable --now iscsid > /dev/null 2>&1
|
||||
echo -e "${GREEN}✓ 已安装必要依赖${NC}"
|
||||
|
||||
# 4. 设置主机名
|
||||
echo -e "${YELLOW}[4/6] 配置主机名...${NC}"
|
||||
read -p "请输入此节点的主机名 (例如: worker-1): " HOSTNAME
|
||||
if [ -n "$HOSTNAME" ]; then
|
||||
hostnamectl set-hostname $HOSTNAME
|
||||
echo -e "${GREEN}✓ 主机名已设置为: $HOSTNAME${NC}"
|
||||
else
|
||||
echo -e "${YELLOW}⚠ 跳过主机名设置${NC}"
|
||||
fi
|
||||
|
||||
# 5. 安装 k3s agent
|
||||
echo -e "${YELLOW}[5/6] 安装 k3s agent...${NC}"
|
||||
echo -e "${YELLOW}这可能需要几分钟时间...${NC}"
|
||||
|
||||
curl -sfL https://get.k3s.io | K3S_URL=https://${MASTER_IP}:6443 \
|
||||
K3S_TOKEN=${NODE_TOKEN} \
|
||||
sh - > /dev/null 2>&1
|
||||
|
||||
if [ $? -eq 0 ]; then
|
||||
echo -e "${GREEN}✓ k3s agent 安装成功${NC}"
|
||||
else
|
||||
echo -e "${RED}✗ k3s agent 安装失败${NC}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 6. 验证安装
|
||||
echo -e "${YELLOW}[6/6] 验证安装...${NC}"
|
||||
sleep 10
|
||||
|
||||
if systemctl is-active --quiet k3s-agent; then
|
||||
echo -e "${GREEN}✓ k3s-agent 服务运行正常${NC}"
|
||||
else
|
||||
echo -e "${RED}✗ k3s-agent 服务未运行${NC}"
|
||||
echo -e "${YELLOW}查看日志: sudo journalctl -u k3s-agent -f${NC}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo -e "${GREEN}================================${NC}"
|
||||
echo -e "${GREEN}✓ Worker 节点加入成功!${NC}"
|
||||
echo -e "${GREEN}================================${NC}"
|
||||
echo ""
|
||||
echo -e "${YELLOW}下一步操作:${NC}"
|
||||
echo -e "1. 在 Master 节点执行以下命令查看节点状态:"
|
||||
echo -e " ${GREEN}kubectl get nodes${NC}"
|
||||
echo ""
|
||||
echo -e "2. 为节点添加标签 (在 Master 节点执行):"
|
||||
echo -e " ${GREEN}kubectl label nodes $HOSTNAME node-role.kubernetes.io/worker=worker${NC}"
|
||||
echo ""
|
||||
echo -e "3. 查看节点详细信息:"
|
||||
echo -e " ${GREEN}kubectl describe node $HOSTNAME${NC}"
|
||||
echo ""
|
||||
88
004-scripts/project-tools/project-status.sh
Executable file
88
004-scripts/project-tools/project-status.sh
Executable file
@@ -0,0 +1,88 @@
|
||||
#!/bin/bash
|
||||
# 项目状态检查脚本
|
||||
# 扫描仓库并显示项目状态、部署情况、文档完整性等
|
||||
|
||||
echo "╔════════════════════════════════════════════════════════════════╗"
|
||||
echo "║ K3s Monorepo - 项目状态 ║"
|
||||
echo "╚════════════════════════════════════════════════════════════════╝"
|
||||
echo ""
|
||||
|
||||
# 检查已部署的应用
|
||||
echo "📦 已部署应用:"
|
||||
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
||||
|
||||
if command -v kubectl &> /dev/null; then
|
||||
kubectl get deployments -A 2>/dev/null | grep -E "(php-test|go01|wordpress|registry|n8n|gitea)" | \
|
||||
awk '{printf " ✅ %-25s %-15s %s/%s replicas\n", $2, $1, $4, $3}' || echo " ⚠️ 无法获取部署信息"
|
||||
else
|
||||
echo " ⚠️ kubectl 未安装,无法检查部署状态"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo "📱 应用项目:"
|
||||
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
||||
|
||||
# 检查每个应用目录
|
||||
for dir in php-test go01 rails/*/ www; do
|
||||
if [ -d "$dir" ]; then
|
||||
name=$(basename "$dir")
|
||||
readme=""
|
||||
dockerfile=""
|
||||
k8s=""
|
||||
|
||||
[ -f "$dir/README.md" ] && readme="📄" || readme=" "
|
||||
[ -f "$dir/Dockerfile" ] && dockerfile="🐳" || dockerfile=" "
|
||||
[ -d "$dir/k8s" ] || [ -f "$dir/k8s-deployment.yaml" ] && k8s="☸️ " || k8s=" "
|
||||
|
||||
printf " %-30s %s %s %s\n" "$name" "$readme" "$dockerfile" "$k8s"
|
||||
fi
|
||||
done
|
||||
|
||||
echo ""
|
||||
echo "🏗️ 基础设施服务:"
|
||||
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
||||
|
||||
for dir in k3s/*/; do
|
||||
if [ -d "$dir" ]; then
|
||||
name=$(basename "$dir")
|
||||
yaml_count=$(find "$dir" -name "*.yaml" 2>/dev/null | wc -l)
|
||||
printf " %-30s %2d YAML 文件\n" "$name" "$yaml_count"
|
||||
fi
|
||||
done
|
||||
|
||||
echo ""
|
||||
echo "🛠️ 平台工具:"
|
||||
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
||||
|
||||
for dir in traefik kuboard proxy; do
|
||||
if [ -d "$dir" ]; then
|
||||
yaml_count=$(find "$dir" -name "*.yaml" 2>/dev/null | wc -l)
|
||||
printf " %-30s %2d YAML 文件\n" "$dir" "$yaml_count"
|
||||
fi
|
||||
done
|
||||
|
||||
echo ""
|
||||
echo "📊 统计信息:"
|
||||
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
||||
|
||||
total_yaml=$(find . -name "*.yaml" -type f 2>/dev/null | wc -l)
|
||||
total_md=$(find . -name "*.md" -type f 2>/dev/null | wc -l)
|
||||
total_sh=$(find . -name "*.sh" -type f 2>/dev/null | wc -l)
|
||||
total_dockerfile=$(find . -name "Dockerfile" -type f 2>/dev/null | wc -l)
|
||||
|
||||
echo " YAML 配置文件: $total_yaml"
|
||||
echo " Markdown 文档: $total_md"
|
||||
echo " Shell 脚本: $total_sh"
|
||||
echo " Dockerfile: $total_dockerfile"
|
||||
|
||||
echo ""
|
||||
echo "💡 提示:"
|
||||
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
||||
echo " 📄 = 有 README 文档"
|
||||
echo " 🐳 = 有 Dockerfile"
|
||||
echo " ☸️ = 有 Kubernetes 配置"
|
||||
echo ""
|
||||
echo " 查看详细信息: cat PROJECT-INDEX.md"
|
||||
echo " 查看目录结构: ./scripts/project-tree.sh"
|
||||
echo " 查看集群状态: make status"
|
||||
echo ""
|
||||
59
004-scripts/project-tools/project-tree.sh
Executable file
59
004-scripts/project-tools/project-tree.sh
Executable file
@@ -0,0 +1,59 @@
|
||||
#!/bin/bash
|
||||
# 目录树生成脚本
|
||||
# 生成清晰的项目目录结构,过滤掉不必要的文件
|
||||
|
||||
echo "╔════════════════════════════════════════════════════════════════╗"
|
||||
echo "║ K3s Monorepo - 目录结构 ║"
|
||||
echo "╚════════════════════════════════════════════════════════════════╝"
|
||||
echo ""
|
||||
|
||||
# 检查 tree 命令是否存在
|
||||
if ! command -v tree &> /dev/null; then
|
||||
echo "⚠️ tree 命令未安装"
|
||||
echo ""
|
||||
echo "安装方法:"
|
||||
echo " Ubuntu/Debian: sudo apt-get install tree"
|
||||
echo " CentOS/RHEL: sudo yum install tree"
|
||||
echo " macOS: brew install tree"
|
||||
echo ""
|
||||
echo "使用 ls 命令替代显示:"
|
||||
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
||||
echo ""
|
||||
ls -lh --group-directories-first 2>/dev/null || ls -lh
|
||||
exit 0
|
||||
fi
|
||||
|
||||
echo "📁 根目录结构 (2层):"
|
||||
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
||||
tree -L 2 -I 'node_modules|.git|__pycache__|*.pyc|.claude' \
|
||||
--dirsfirst \
|
||||
-F \
|
||||
/home/fei/k3s
|
||||
|
||||
echo ""
|
||||
echo "📱 应用项目详情:"
|
||||
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
||||
|
||||
echo ""
|
||||
echo "php-test/ (PHP 应用):"
|
||||
tree -L 2 -I 'node_modules|.git' php-test 2>/dev/null || echo " 目录不存在"
|
||||
|
||||
echo ""
|
||||
echo "go01/ (Go 应用):"
|
||||
tree -L 2 -I 'node_modules|.git' go01 2>/dev/null || echo " 目录不存在"
|
||||
|
||||
echo ""
|
||||
echo "🏗️ 基础设施配置:"
|
||||
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
||||
|
||||
echo ""
|
||||
echo "k3s/ (基础设施):"
|
||||
tree -L 2 -I 'node_modules|.git' k3s 2>/dev/null || echo " 目录不存在"
|
||||
|
||||
echo ""
|
||||
echo "💡 提示:"
|
||||
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
||||
echo " 查看完整结构: tree -I 'node_modules|.git'"
|
||||
echo " 查看项目索引: cat PROJECT-INDEX.md"
|
||||
echo " 查看项目状态: ./scripts/project-status.sh"
|
||||
echo ""
|
||||
Reference in New Issue
Block a user