Skip to content

lin327/pineapple-ops

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Pineapple Ops

Pineapple 基础设施与运维脚本配置管理仓库。

Notion 文档:Pineapple-Ops 多云运维平台

🏗 架构总览

全平台节点、服务、流量关系总览。实线 = 业务流量,虚线 = 辅助流量(监控/运维/CI/邮件)

graph TB
    User([用户浏览器]) -->|HTTPS| CF[Cloudflare CDN<br/>DNS 解析 + DDoS 防护]
    CF -->|A 记录| NG[腾讯云 Nginx<br/>100.115.0.1<br/>2C 2G 50G 4Mbps<br/>SSL 终结 + 反向代理]
    CF -.->|MX/SPF/DKIM| RESEND[Resend 邮件服务<br/>tentative.me 域名]

    subgraph DO [DigitalOcean 新加坡 · K3s 集群]
        MASTER[K3s Master<br/>100.115.0.33<br/>4C 8G 160G<br/>etcd + API Server]
        W1[K3s Worker1<br/>100.115.0.40<br/>2C 4G 80G<br/>kubelet + kube-proxy]
        W2[K3s Worker2<br/>100.115.0.41<br/>2C 4G 80G<br/>kubelet + kube-proxy]
    end

    subgraph K3S [K3s 集群内部服务]
        GHOST[Ghost 博客<br/>:30080 · NodePort]
        KUBOARD[Kuboard 管理<br/>:31717 · NodePort]
        MINIO[MinIO 对象存储<br/>:31901 · S3 API]
        ALIST[AList 网盘聚合<br/>:31717 · 40TB]
        GRAFANA[Grafana 可视化<br/>:30858 · 仪表盘]
        VM[VictoriaMetrics<br/>:8428 · 90天保留]
        NE[node_exporter<br/>:9100 · DaemonSet]
        MDB[MariaDB<br/>:3306 · InnoDB]
        REDIS[Redis<br/>:6379 · 缓存层]
    end

    MASTER ---|控制面| K3S
    W1 & W2 -.->|工作负载| K3S

    NG -->|*.pineapple-user.site<br/>:31717| K3S
    NG -->|pass.pineapple-user.site| JD

    subgraph JD [京东云 · 独立节点]
        VW[Vaultwarden<br/>100.115.0.2<br/>:8080 · 密码管理]
        UK[Uptime Kuma<br/>100.115.0.2<br/>:3001 · 可用性监控]
        NE2[node_exporter<br/>:9100]
    end

    subgraph HSY [火山云 · 堡垒机]
        BASTION[Next-Terminal<br/>100.115.0.3<br/>2C 2G 40G 1Mbps<br/>仅 Tailscale 内网访问]
    end

    GHOST --> MDB & REDIS
    GHOST -.->|附件/图片| MINIO
    ALIST -.->|115 网盘挂载| CLOUD[115 云盘 40TB]
    GRAFANA --> VM
    VM -.->|采集指标| NE & NE2

    MASTER & W1 & W2 -.->|Self-hosted Runner| GITHUB[GitHub Actions<br/>CI/CD]

    RESEND -.->|ghost-tentative.me| EMAIL([163 邮箱<br/>每日 09:02 日报])
Loading

源文件:docs/architecture.mmd

🌐 域名与 DNS

域名 解析目标 用途 备注
pineapple-user.site 腾讯云 100.115.0.1 主域名,博客展示 Cloudflare 管理,长期 SSL 证书
*.pineapple-user.site 腾讯云 → K3s Ingress 子域名通配 Cloudflare 管理
tentative.me 无云服务器解析 Resend 邮件发送域 ghost@tentative.me

🖥 节点信息

节点 云厂商 Tailscale IP 配置 角色 系统
K3s Master DigitalOcean 新加坡 100.115.0.33 4C 8G 160G K3s 控制节点 + GitHub Runner Debian 13
K3s Worker1 DigitalOcean 新加坡 100.115.0.40 2C 4G 80G K3s 工作节点 + GitHub Runner Debian 13
K3s Worker2 DigitalOcean 新加坡 100.115.0.41 2C 4G 80G K3s 工作节点 + GitHub Runner Debian 13
Nginx 腾讯云 100.115.0.1 2C 2G 50G 4Mbps 反向代理 + SSL 终结 + Resend 邮件 Debian 13
堡垒机 火山云 100.115.0.3 2C 2G 40G 1Mbps Next-Terminal (仅内网) Debian 13
工具节点 京东云 100.115.0.2 2C 4G 60G 5Mbps Vaultwarden + Uptime Kuma Debian 13

☸️ K3s 集群服务

服务 用途 备注
Ghost 博客平台 pineapple-user.site 展示页面
Kuboard K3s 集群可视化管理 Web UI 管理面板
MinIO S3 兼容对象存储 后台管理页面
AList 网盘聚合 挂载 115 网盘 40TB
Grafana 监控可视化面板 仪表盘 + 日报截图
VictoriaMetrics Prometheus 兼容时序数据库 指标存储
MariaDB 关系型数据库 Ghost / 其他服务后端
Redis 内存缓存 会话 / 缓存层

📍 站点路由

所有 HTTPS 流量统一由腾讯云主机上的 Nginx 进行 SSL 终结和反向代理,采用 snippet 模式共享 ssl-params.confproxy-params.conf 配置(证书挂载至 /etc/nginx/ssl/)。

域名路由 服务 后端
pineapple-user.site Ghost 博客 (前端展示) K3s Ingress
ghost.pineapple-user.site/ghost Ghost 后台管理 K3s Ingress
kuboard.pineapple-user.site Kuboard 后台管理 K3s Ingress
grafana.pineapple-user.site Grafana 监控面板 K3s Ingress
minio.pineapple-user.site MinIO 后台管理 K3s Ingress
driver.pineapple-user.site AList 后台管理 K3s Ingress
pass.pineapple-user.site Vaultwarden 密码管理 100.115.0.2:8080
*.pineapple-user.site K3s Ingress 通配路由 K3s Ingress

🔧 技术栈

组件 用途
K3s 轻量级 Kubernetes 集群
Tailscale 零配置 Mesh VPN (100.115.0.0/24)
Nginx 反向代理 + SSL 终结
Ghost 博客/CMS 平台
Grafana 监控可视化
VictoriaMetrics 时序数据库
node_exporter 系统指标采集 (除堡垒机外全节点)
Vaultwarden 自托管密码管理器
Uptime Kuma 服务可用性监控
Next-Terminal 堡垒机 / 运维审计
Kuboard K3s 集群 Web 管理
MinIO S3 对象存储
AList 网盘聚合 (115 网盘 40TB)
MariaDB + Redis 数据库 + 缓存
Resend 邮件发送服务 (ghost@tentative.me)
Playwright + Chromium Grafana 截图 + PDF 生成
Cloudflare DNS 管理 + CDN

📊 监控与日报

数据采集

除火山云堡垒机外,每个节点均安装 node_exporter(端口 9100),由 VictoriaMetrics 采集存储。

日报推送

每天 09:02(北京时间)通过 Python + Playwright + Chromium 自动执行:

  • 从 Grafana 截取监控面板截图 (PNG)
  • 合并截图生成 PDF 报告
  • 通过 Resend API 发送邮件至 163 邮箱
2 9 * * * /usr/bin/python3 /opt/grafana-report.py >> /var/log/grafana-report.log 2>&1

邮件配置

  • 发送域:tentative.me (Resend)
  • 发送地址:ghost@tentative.me

🏃 GitHub Runner

DigitalOcean 三台设备(Master + Worker1 + Worker2)均配置为 GitHub Actions Self-hosted Runner,用于 CI/CD 构建任务。

🔒 安全说明

  • 火山云堡垒机 (100.115.0.3) 仅限 Tailscale 内网访问,不解析域名
  • 所有 HTTPS 流量经腾讯云 Nginx SSL 终结后转发
  • Tailscale 提供全节点加密互联
  • Vaultwarden 提供团队密码管理
  • Uptime Kuma 监控各服务可用性

About

Pineapple 项目运维脚本与配置仓库

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages