V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
bloodkey
V2EX  ›  DevOps

自建全套开源 DevOps 实践

  •  3
     
  •   bloodkey · 2022-05-12 15:36:11 +08:00 · 8269 次点击
    这是一个创建于 921 天前的主题,其中的信息可能已经有所发展或是发生改变。

    国内的 Devops 云平台动辄封号,删库,屏蔽,国内云平台 devops 已死!自建 Devops 平台才靠谱。这里采用开源项目建立一个完善的 Devops 系统,基本运行良好!

    个人 devops 实践系统。整套系统可以完全内网实现,不用申请域名、ssl 证书,完全自己管理 dns ,自签名证书。

    配合 Consul 可以实现自动负载均衡 Consul

    大家有什么更好的项目推荐没?

    首发于个人 blog

    84 条回复    2023-12-31 02:00:25 +08:00
    bloodkey
        1
    bloodkey  
    OP
       2022-05-12 15:53:34 +08:00   ❤️ 3
    尽量不使用 java 项目,不是 java 项目不好,而是同样的功能,java 项目是其它语言的至少 10 倍 cpu ,内存消耗,启动速度还贼慢

    整套系统基本打通了项目开发所有过程
    singerll
        2
    singerll  
       2022-05-12 16:05:21 +08:00
    你怕不是对 devops 有什么误解,两个服务器监控都没有,你这些功能根本不是企业关心的,况且这个玩意根本就不是几个人能够完成的产品。

    至于你说的“国内的 Devops 云平台动辄封号,删库,屏蔽,国内云平台 devops 已死!”,先不说你说的对不对,你对私有云肯定是有误解的。。。
    duzhor
        3
    duzhor  
       2022-05-12 16:15:11 +08:00
    esearch ? openstack ?多大的公司啊要给 devops 上这些?
    bloodkey
        4
    bloodkey  
    OP
       2022-05-12 16:15:56 +08:00
    @singerll 整个系统普通 nas,32G 内存,跑起来完全没问题

    多节点监控,备份,负载平衡加服务器扩展,容易得很。ELK 集群对于小系统完全事多余的,portainer 就够用了

    少于 200 节点 k8s 也是多余的
    bloodkey
        5
    bloodkey  
    OP
       2022-05-12 16:20:36 +08:00
    单台 nas, 32G 内存,上面 docker 跑起来完全没问题,nas 如果是 4 核,2Ghz 以上,支持 500 人同时开发应该没问题
    singerll
        6
    singerll  
       2022-05-12 16:22:25 +08:00
    @bloodkey 别说容易的很,你去试试再说。
    至于你说的小系统,小系统上 devops 就是自找苦吃。
    bloodkey
        7
    bloodkey  
    OP
       2022-05-12 16:23:01 +08:00
    我以及跑起来很长时间了
    @singerll
    bloodkey
        8
    bloodkey  
    OP
       2022-05-12 16:23:17 +08:00
    是已经实现的系统
    bloodkey
        9
    bloodkey  
    OP
       2022-05-12 16:25:40 +08:00
    不光是 devops,共跑了约 80 个 docker ,经过多次优化,平时负载低于 10.
    还是在运行 emby 的情况下,emby 可是很耗资源的
    IvanLi127
        10
    IvanLi127  
       2022-05-12 16:35:40 +08:00
    不错欸
    bloodkey
        11
    bloodkey  
    OP
       2022-05-12 16:40:55 +08:00
    搞云平台的看到我实现的系统是不是很瑟瑟发抖?
    可以说少于 1000 人的企业,使用这个基本就够用了
    云平台把数据交给别人,赌别人的道德不会私自偷拿你的数据?真是想多了。
    某垄断社交平台内部有专门的团队分析客户的数据,看有什么有价值的没有,是很多年前就爆出来的消息
    singerll
        12
    singerll  
       2022-05-12 16:41:23 +08:00
    @bloodkey 我没有说你这个系统不能跑不稳定,我说的是不符合企业 devops 的需求
    xiaotianhu
        13
    xiaotianhu  
       2022-05-12 16:49:07 +08:00   ❤️ 3
    做生意: 管他什么平台什么流程,先上线看看用户反馈再说,搞量搞内容第一位

    做技术:管他什么用户什么业务,先把运维搞完美
    bloodkey
        14
    bloodkey  
    OP
       2022-05-12 16:51:30 +08:00
    @singerll 多大的企业,对 devops 有什么要求?

    整个系统每个节点都是可以随时扩容,多节点备份的
    Alliot
        15
    Alliot  
       2022-05-12 16:57:59 +08:00
    @xiaotianhu 真相了 2333 感觉技术人都很容易陷入这样一个误区。
    bloodkey
        16
    bloodkey  
    OP
       2022-05-12 17:00:14 +08:00
    @duzhor 对于企业自用,openstack 感觉就是多余,自用搭建个 k8s 云就够了,少于 200 节点直接 docker 就够了

    对外提供云服务的大型云平台才会考虑上 openstack
    scyuns
        17
    scyuns  
       2022-05-12 17:08:05 +08:00
    还有没有更轻量级的
    hb0730
        18
    hb0730  
       2022-05-12 17:09:08 +08:00
    我现在用的 gitea+drone 还 OK
    bloodkey
        19
    bloodkey  
    OP
       2022-05-12 17:10:51 +08:00
    @scyuns 用 gitea+drone ,zentao 想用就用,资源占用极低,个人使用 8G 内存的 nas 跑起来完全够用
    bloodkey
        20
    bloodkey  
    OP
       2022-05-12 17:12:24 +08:00
    gitlab 要跑起来至少要 8G 内存,jenkins 也是内存 cpu 占用大户。大于 16G 内存时考虑上这个
    32G 内存,图片中介绍的可以都跑起来!

    是不是非常节省内存,也省钱 O(∩_∩)O
    myu7815
        21
    myu7815  
       2022-05-12 17:23:40 +08:00
    免费的 gitlab 无法使用 es 高级搜索吧
    Judoon
        22
    Judoon  
       2022-05-12 17:24:52 +08:00
    别的不问了,就问问能支撑多大业务量吧
    huai
        23
    huai  
       2022-05-12 17:27:55 +08:00
    腾讯的蓝鲸呢?
    bloodkey
        24
    bloodkey  
    OP
       2022-05-12 17:33:07 +08:00
    @myu7815 自用,破解了 gitlabee 破解方法来自于官方文档,企业用就去买个授权
    bloodkey
        25
    bloodkey  
    OP
       2022-05-12 17:34:49 +08:00
    @Judoon 看你的 cpu 和内存大小,看 gitlab 官方文档介绍,至少 2 核 8G 。4 核 8G 可以支撑 8000 用户

    gitlab 还支持建立多节点集群,就是说你服务器够多,搭建个类似 github 都行
    bloodkey
        26
    bloodkey  
    OP
       2022-05-12 17:39:28 +08:00
    @huai 这套系统偏向基本研发,测试,运维。蓝鲸是大系统,多节点时才需要考虑的,类似 ELK ,K8S
    defunct9
        27
    defunct9  
       2022-05-12 17:39:30 +08:00   ❤️ 1
    代码管理那一陀,可以用 onedev 代替
    Judoon
        28
    Judoon  
       2022-05-12 17:44:50 +08:00
    @bloodkey 我问的是你当前的状态能支撑多少人同时使用。
    defunct9
        29
    defunct9  
       2022-05-12 17:44:53 +08:00
    域名那一块,可以把 coredns 拿出来用
    bloodkey
        30
    bloodkey  
    OP
       2022-05-12 17:45:19 +08:00
    @defunct9 onedev 查看了下,是个好项目,替代 gitlab 可以节约大量 cpu 和内存
    bloodkey
        31
    bloodkey  
    OP
       2022-05-12 17:47:40 +08:00
    @Judoon 私人 nas ,只满足个人使用。还有全套视频,图书,音乐管理系统,多少人使用没有测试,cpu 和内存剩余范围支撑个几百号人同时使用 gitlab 应该没问题的
    Judoon
        32
    Judoon  
       2022-05-12 17:52:37 +08:00
    @bloodkey 你的 nas 什么配置,既然没有测试。那压测一下,按你说的,几百个人同时使用。其他场景先不算,只考虑 10 个 gitlab-runner 同时运行,应该顶得住吧,2 个 golang ,2 个 java ,2 个 python ,2 个 node ,2 个其他,编译打包打镜像推送。

    你压测试试,看看数据,让大家信服
    defunct9
        33
    defunct9  
       2022-05-12 17:53:38 +08:00
    @bloodkey 那么,你也会同意 coredns 替代 dnsmasq 的用法。虽然,dnsmasq 确实是个大杀器。
    defunct9
        34
    defunct9  
       2022-05-12 17:57:03 +08:00
    最后,cmdb 用了很多,ralph 、netbox 、蓝鲸、open-cmdb ,没一个好用的,谁还有更好的推荐么?要机柜图,要网络拓扑图,要知道机器信息,要知道交换机端口配置,还要知道硬盘什么时候更换过。
    bloodkey
        35
    bloodkey  
    OP
       2022-05-12 18:00:47 +08:00
    cpu j4125 4 核 14nm 2.00 GHz ~2.70 GHz
    SSD sata 接口的 读写 500MB/S
    32G DDR4. 2x16G 双通道

    @Judoon 个人开了 2 个 gitlab-runner ,个人 nas 是娱乐开发双重定位的,搞啥压力测试,再多用户用技术手段限制性能消耗,排队来支持更多用户才是王道。花费更多金钱去满足极少数情况的高压力是钱多的没处花
    bloodkey
        36
    bloodkey  
    OP
       2022-05-12 18:04:58 +08:00
    @defunct9 你说的这些要求,很难用纯软件实现,要靠好的文档记录和交接才行
    bloodkey
        37
    bloodkey  
    OP
       2022-05-12 18:07:28 +08:00
    @defunct9 用 dnscrypt 和 dnsmasq 的原因是满足 DOH 防污染,dns 去广告,和域名管理
    coredns 可以实现这三个要求么?
    bloodkey
        38
    bloodkey  
    OP
       2022-05-12 18:28:39 +08:00
    自建 CA 是自己用脚本写的 CA 管理系统,IP ,泛域名,多域名签名一个证书搞定!
    wolfmei
        39
    wolfmei  
       2022-05-12 22:28:06 +08:00
    我医院系统完全用不了这套东西
    defunct9
        40
    defunct9  
       2022-05-13 08:55:32 +08:00
    @bloodkey DOH 、DOT 、劫持、管理都可以,cordns 是 k8s 的一部分。
    root01
        41
    root01  
       2022-05-13 09:54:12 +08:00
    谢谢楼主的博客提供的学习教程
    lialzm
        42
    lialzm  
       2022-05-13 10:55:48 +08:00
    open-cmdb 是这个项目吗

    https://github.com/open-cmdb/cmdb
    WIN2333
        43
    WIN2333  
       2022-05-13 11:07:06 +08:00
    你对 java 也不是也有什么误解,口说无凭,拿证据出来
    bloodkey
        44
    bloodkey  
    OP
       2022-05-13 11:15:14 +08:00
    @lialzm 就是这个

    @WIN2333 你自己去运行试一下 jira 和 zentao ,对比一下就知道差距
    WIN2333
        45
    WIN2333  
       2022-05-13 11:19:54 +08:00
    @bloodkey 那是 jira 的问题不是 Java 的问题,另外,大部分企业选择的都是 jira ,而不是 zentao 哈
    bloodkey
        46
    bloodkey  
    OP
       2022-05-13 11:23:57 +08:00
    @WIN2333 java 插件国内加载异常的慢,cpu 和内存消耗大,是怎么也掩饰不了的
    struggle001
        47
    struggle001  
       2022-05-13 11:24:57 +08:00
    管理 18 个机柜 OpenStack 集群的运维飘过。。。3 个柜子以内 pve 挺香的,后端用 ceph
    不过你想做什么东西,我没看懂。。
    还有这个东西太大了,如果公司业务需要支撑,还好,否则就算开发好了 也没人用啊
    struggle001
        48
    struggle001  
       2022-05-13 11:30:40 +08:00
    文中的好多东西都在用 只有 nextcloud 是给公司内部提供的云盘平台。gitlab 也在用。。elk 也在用,zabbix ,cacti ,cobbler 等等。我都是野路子。。。面向业务做开发部署。好多东西都是靠脚本完成。。服务器虽然很多,但是也没用 ansible 这些东西。麻烦。
    struggle001
        49
    struggle001  
       2022-05-13 11:35:41 +08:00
    @defunct9
    netbox 这个可以尝试当 cmdb 用,不过还是要考个人梳理层级关系。
    至于网络监控靠 Prometheus 和 grafana 好像也还行。不过 cacti 也要当个备份。。拓扑这东西真的没发现更好的软件。。
    cacti 气象图有点弱了
    bloodkey
        50
    bloodkey  
    OP
       2022-05-13 11:36:54 +08:00
    @struggle001 目标是单节点,最低成本,实现一个开源可用的 devops
    什么 k8s ceph 中小企业完全不需要
    struggle001
        51
    struggle001  
       2022-05-13 11:37:29 +08:00
    @defunct9 没看清你写 netbox 了,这个梳理清楚还挺好用的,不过前期规划好挺重要的。
    我们的资产管理 加上百台网络设备和端口管理 ip 管理 都在用这个。
    struggle001
        52
    struggle001  
       2022-05-13 11:39:19 +08:00
    @bloodkey 挺好的,期待你的作品。其实我们现在系统也挺多的,东一个 西一个 没统一的入口挺恶心的。现在唯一可以搞的是有统一的 passport 或者 oss 。。
    bloodkey
        53
    bloodkey  
    OP
       2022-05-13 12:30:09 +08:00
    @struggle001 这套系统已经是可运行的,开发,测试,运维各个环节基本打通
    文档太多,功能太复杂,只用起来部分功能

    有啥改进建议没?
    struggle001
        54
    struggle001  
       2022-05-13 12:35:29 +08:00
    @bloodkey 东西太多了,适合的才是最好的。
    这套平台是不是模块化的,可以自己选择模块,松耦合。如果是,那就更好了。
    struggle001
        55
    struggle001  
       2022-05-13 12:36:32 +08:00
    @bloodkey nginx 没考虑高可用吧。。哈哈
    bloodkey
        56
    bloodkey  
    OP
       2022-05-13 12:41:51 +08:00
    @struggle001 本身都是 docker 运行,可以根据需要用到那个就启动运行那个 docker
    nginx 高可用,考虑用 dns 多线路负载均衡,dnsmasq 还没研究出来怎么配置多线路负载均衡与掉线自动切换
    defunct9
        57
    defunct9  
       2022-05-13 15:40:27 +08:00
    @struggle001 cacti 已死,画个聚合图要死人了。换 librenms 吧。
    defunct9
        58
    defunct9  
       2022-05-13 15:45:10 +08:00
    @bloodkey nginx 普通高可用 keepalived 或者 ucarp 都可以了。怎么双上联那是网管的事了。
    zhaohua
        59
    zhaohua  
       2022-05-13 16:02:22 +08:00   ❤️ 1
    我司现在大约 15 人左右的研发团队,说说我的经验,一开始也想着自建一些基础设施, 当然没 op 这么大规划,只想把基础监控告警做起来, 折腾了半年 elk, grafana ,prometheus , k8s.
    后来发现相比云服务,成本高不说(别说一台 32G nas ALO 不敢,再者除了硬件,人员也要开工资),受限于性能体验还差, 除了 gitlab+drone 其他能上云的都上云了, 沟通和组织架构用企业微信,项目管理用 tapd 文档用语雀, 监控日志告警用阿里云,负载均衡云 slb. 消息队列用 ons. 感觉非常满意.
    自建 devops 小厂就别考虑, 老老实实上云吧,搭一套容易,维护起来就要命了.
    zhaohua
        60
    zhaohua  
       2022-05-13 16:04:36 +08:00
    你要是运维能说服老板折腾,那这套对个人生涯是极好的.要是技术负责人就算了,别给自己挖坑.
    dreamusername
        61
    dreamusername  
       2022-05-13 16:06:54 +08:00
    Gitlab+Lark+Zadig 就足够了
    betainCao
        62
    betainCao  
       2022-05-13 17:47:07 +08:00
    公司里的 devops 一般是从 0->1 的过程,你这套创业公司用不起,从 0->1 需要什么拿什么,而不是上来就是你这一套。
    betainCao
        63
    betainCao  
       2022-05-13 17:52:14 +08:00
    @zhaohua #59 云原生时代,上云才是最终解。自建说实话成本高的吓人!
    bloodkey
        64
    bloodkey  
    OP
       2022-05-13 18:01:24 +08:00
    @betainCao 把数据交给别人就是找死
    最近不是某 ceo 在微博质问为啥某社交通信公司员工查看他们私密文件?留下访问记录?

    动动手指就删光你所有文件,你能怎么着? 注册账号时就同意了别人不用负任何责任,闲死得不够快?

    公有云解决不了信任问题,私有云才是未来!

    再说,这套系统这么简单,而且都是可以需要那个就安装运行那个,怎么到你这里就得上全套?
    bloodkey
        65
    bloodkey  
    OP
       2022-05-13 18:11:13 +08:00
    使用 X 里云,然后发现数据被窃取,人家利用你的数据造一个一模一样的项目,并取代你,这种新闻可以去搜一下,一搜一大把
    bloodkey
        66
    bloodkey  
    OP
       2022-05-13 18:13:37 +08:00
    真实例子,某 ip 数据库服务,使用 x 里云,然后被克隆
    维权不成,没有任何说法
    bloodkey
        67
    bloodkey  
    OP
       2022-05-13 18:22:44 +08:00
    @zhaohua 个人认为刚好相反,如果公司的产品没啥技术含量,上云没有关系

    如果数据,代码是核心资产与竞争力,上云就是找死!

    而且,自己控制数据,对有利于研发,运维的,不可替代性更高。都上云,才是更容易被替代
    bloodkey
        68
    bloodkey  
    OP
       2022-05-13 18:35:49 +08:00
    在数据安全,企业生死存亡面前,成本什么的都是浮云,成本再高有被克隆,被复制死亡成本高么?

    再说,这套系统也是从少到多,从小到大,慢慢优化,扩展的,硬件成本也是随着需求变化而变化的,随着业务扩展而增加成本,一开始单节点单服务器就可以满足要求了,后面业务增加慢慢扩展为集群,k8s 等
    qfdk
        69
    qfdk  
       2022-05-13 20:34:49 +08:00 via iPhone
    呃 看了半天才明白想表达什么 . 简单来说就是你被某些平台封号了 然后自己摘了些开源工具搭了一个差不多可以自用的. 动手能力 OK
    struggle001
        70
    struggle001  
       2022-05-13 23:14:40 +08:00
    @defunct9 我们混着用
    yyttrr
        71
    yyttrr  
       2022-05-14 09:36:52 +08:00
    感觉部署那里缺了一层,不是简单的一个镜像就能带过的,例如 k8s 里面一个服务的 env 、hpa 、资源限制这些都是部署的一部分,需要有个类似 helm chat 的东西管理。还有一个镜像可能会部署到多种环境,例如常驻势实例在 k8s 上,临时扩容的扔到云厂商的函数计算里面
    wazggcd
        72
    wazggcd  
       2022-05-14 09:57:08 +08:00 via Android
    @bloodkey 私有云部署在自己的服务器上,外网隔离,不会有隐私问题
    kongkx
        73
    kongkx  
       2022-05-14 12:10:55 +08:00 via iPhone
    现在个人运维都搞这么复杂了吗?
    bloodkey
        74
    bloodkey  
    OP
       2022-05-14 12:13:01 +08:00
    @yyttrr docker 参数中可以限制 cpu 内存,可以 portainer 配合 git 管理并部署 docker compose
    k8s 太耗资源了,至少 5 个节点才能把 k8s 完整跑起来,每个节点光 k8s 不包括其它实例,就至少需要 8G 内存
    wuxqing
        75
    wuxqing  
       2022-05-14 16:43:11 +08:00
    @betainCao 我们小团队原先也是用某家云的,1 年成本 20 多万,还经常负载高了把 ECS 卡死,只能重启,重启一下有时候要 10 多分钟,运维成本也是同样存在的。后来直接搞了几台服务器托管,快 2 年了,稳得很,每年还能节省将近 20 万成本。
    yyttrr
        76
    yyttrr  
       2022-05-14 19:21:45 +08:00
    @bloodkey 我这里最小的一个集群也有 20 个 32 核 128G 的虚拟机了,k8s 解绑了容器和机器,比 docker 方便太多太多了
    evilStart
        77
    evilStart  
       2022-05-14 19:22:58 +08:00 via Android
    你这套理论上可以公司用,但你怎么说服老板自己搭呢?
    bloodkey
        78
    bloodkey  
    OP
       2022-05-14 19:27:20 +08:00
    @yyttrr 我跑的是最省钱方案,单节点低功耗 nas 服务器,当然没法和专业的服务器相比了,小于 200 节点的,还是直接 docker 省钱。k8s 的方便是消耗 cpu 和内存为前提的
    bloodkey
        79
    bloodkey  
    OP
       2022-05-14 19:29:09 +08:00
    @evilStart 就说数据安全啊,举几个被 x 里云克隆,无法维权的例子,血淋淋的教训在前面,头铁的应该很少
    bloodkey
        80
    bloodkey  
    OP
       2022-05-14 20:47:00 +08:00
    @wuxqing 一个自建 devops 省钱的真实例子,和云厂商鼓吹的上云省钱刚好相反

    自建需要各个公司养更多开发和运维,对所有开发和运维人员都有利。上云,只对云厂商有利。

    鼓吹上云省钱,方便的,可以说不是无知就是利益相关方了
    jack778
        81
    jack778  
       2022-05-22 11:20:28 +08:00
    @bloodkey 好的产品也要有好的营销
    jack778
        82
    jack778  
       2022-05-22 11:24:55 +08:00
    创业公司要的是最低的成本来实现业务,至于上云或者自建,都是无所谓的,时间成本才是他们最关心的.试问有几家公司能做出被 bat 觊觎的产品呢?
    jack778
        83
    jack778  
       2022-05-22 11:26:10 +08:00
    @wuxqing 应该是服务器超卖了
    winson030
        84
    winson030  
       323 天前
    学习了!搭建实验环境或者 home server 还是很不错的!不过去到生产环境能用 managed services 就用 managed services ,机器的存储、网络、硬件出问题的时候比维护服务要折腾。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5400 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 41ms · UTC 09:23 · PVG 17:23 · LAX 01:23 · JFK 04:23
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.