饮墨

子安饮墨馀三斗,留与卿儿作赋来

Infisical:开源密钥管理平台,彻底替代 .env 散落式密钥管理

发表评论 120 views

痛点:.env 文件在生产环境的致命缺陷

运维工程师大概都经历过这些场景:

  • 新人入职,前辈把 .env 文件通过 Slack/钉钉明文发一份过来
  • 某个 API Key 轮换,需要逐台服务器手动更新 .env,漏改一台就是 P0 事故
  • 审计要求追溯"谁在什么时间修改了哪个密钥",.env 文件毫无审计能力
  • 多环境(dev/staging/prod)密钥靠命名约定(.env.prod)区分,一旦复制错误直接打到生产数据库

.env 是开发阶段的便利工具,但它从来不是为生产环境设计的密钥管理方案。当团队规模超过 5 人、服务超过 10 个时,散落的 .env 文件就是一颗定时炸弹。


方案...

Read more

Kaniko:在 Kubernetes 中构建容器镜像,彻底告别 Docker Daemon

痛点

在 CI/CD 流水线中构建容器镜像,传统方案是 Docker-in-Docker(DinD)或挂载宿主机 Docker Socket。两种做法都有硬伤:

  • DinD:需要 --privileged 特权模式,Pod 拥有宿主机几乎所有权限,一旦被攻破等同于节点沦陷
  • 挂载 Socket:任何能访问 /var/run/docker.sock 的容器都能操控宿主机上所有容器,安全审计直接红灯
  • Kubernetes 1.24+ 已移除 dockershim:节点上可能根本没有 Docker Daemon,containerd/CRI-O 环境下 DinD 方案失效

生产环境需要一种 无...

Read more

Mise:一个工具统一管理所有开发语言版本,彻底告别 nvm/pyenv/rbenv

痛点

运维团队的开发环境管理是个老问题:项目 A 需要 Node 18 + Python 3.11,项目 B 需要 Node 20 + Python 3.12 + Go 1.22。传统方案是装一堆 *env 工具——nvm 管 Node、pyenv 管 Python、goenv 管 Go、rbenv 管 Ruby。

实际痛点:

  • 工具碎片化:每个语言一个版本管理器,shell 初始化慢,.bashrc 越来越臃肿
  • asdf 虽好但慢:asdf 解决了统一管理的问题,但它是纯 Shell 实现,每次切换目录都有明显延迟(尤其在有几十个插件时)
  • CI 环境难复现:本地和 CI 用不同的版本管...

Read more

Temporal 分布式工作流引擎生产实践:告别脆弱的 Cron Job 和消息队列

痛点:分布式任务编排的脆弱性

运维团队经常面对这样的场景:一个跨服务的业务流程——比如「用户注册 → 发邮件 → 创建资源 → 配置权限 → 通知上游」——被拆成 5 个 Cron Job + 3 个消息队列 + 若干重试逻辑。任何一个环节失败,排查成本极高:

  • Cron Job 没有状态持久化,失败后从头开始还是从断点续跑?靠人肉判断
  • 消息队列的消费者幂等性难保证,重试导致重复执行
  • 跨步骤的超时、取消、补偿逻辑散落在各处,维护噩梦
  • 流程可观测性几乎为零,只能靠日志 grep

Temporal 正是为解决这类问题而生的开源分布式工作流引擎。它将「工作流即代码」的理念落地,让你用普通编程...

Read more

Kubernetes PDB 生产实战:零停机集群维护的关键配置

痛点

集群升级节点、内核补丁滚动更新、节点缩容时,kubectl drain 一把梭直接驱逐 Pod,结果核心服务瞬间副本数归零,告警群炸了——这是很多运维团队踩过的坑。

根本原因:Kubernetes 默认不关心你的业务可用性,drain 操作会无差别驱逐节点上所有 Pod。如果多个副本恰好调度在同一节点,或者驱逐速度快于新 Pod 就绪速度,服务就会出现中断窗口。

PodDisruptionBudget(PDB) 正是解决这个问题的原生机制——它告诉集群:"在任何自愿中断(voluntary disruption)期间,我的服务至少要保持 N 个副本可用"。

方案

PDB 的核心逻辑...

Read more

Litestream:SQLite 流式复制,单节点应用也能拥有生产级数据保障

痛点:轻量应用的数据库选型困境

你有一个日活几千的内部工具、一个 side project、或者一个单节点部署的 API 服务。数据量不大,QPS 不高,但你依然被迫部署一套 PostgreSQL 或 MySQL —— 因为"SQLite 不能用于生产"这个根深蒂固的观念。

结果是:一个 RDS 实例每月 $30-60 的账单、额外的连接池管理、网络延迟、备份配置……这些复杂度对于一个本可以用 SQLite 搞定的场景来说,完全是过度工程。

核心矛盾:SQLite 性能够用、部署简单,但缺乏持续备份和灾难恢复能力。一旦磁盘故障或误操作,数据就没了。

方案:Litestream — SQL...

Read more

OpenCost 实战:Kubernetes 集群成本可视化与优化指南

发表评论 107 views

痛点

Kubernetes 集群规模一上来,成本就成了黑洞。常见问题:

  • 无法归因:每月云账单一大坨,根本分不清哪个团队、哪个 Namespace、哪个 Pod 在烧钱
  • 资源浪费严重:开发者 request 设 4C8G,实际用了 0.5C1G,节点利用率不到 30%
  • Showback/Chargeback 无数据支撑:财务要求按部门分摊成本,运维拿不出精确数据
  • 商业方案太贵:Kubecost Enterprise 动辄几万美金/年,中小团队承受不起

OpenCost 是 CNCF 孵化的开源 Kubernetes 成本监控项目(Kubecost 开源核心),能以 Pod 粒度实时计算...

Read more

EKS Pod Identity 实战:告别 IRSA,更优雅地管理 Pod AWS 权限

痛点

在 EKS 集群中,Pod 访问 AWS 资源(S3、DynamoDB、SQS 等)需要 IAM 权限。长期以来,IRSA(IAM Roles for Service Accounts) 是标准方案,但随着集群规模增长,IRSA 的痛点越来越明显:

  1. OIDC Provider 管理复杂 — 每个集群需要配置 OIDC Provider,跨账户场景下信任关系配置繁琐
  2. IAM Role Trust Policy 膨胀 — 每个 Role 的信任策略必须精确匹配 OIDC issuer URL + namespace + SA name,维护成本高
  3. Role 数量爆炸 — 多集群共享同...

Read more

Kubernetes RBAC 最小权限实战:从过度授权到精确控制的 5 步落地方案

痛点

生产环境里最常见的 Kubernetes 安全隐患不是漏洞,而是 RBAC 权限膨胀

典型场景:开发团队要部署服务,运维图省事直接给了 cluster-admin;CI/CD Pipeline 的 ServiceAccount 拥有全命名空间的 * 权限;离职员工的 kubeconfig 三个月没回收。一旦某个 Pod 被攻破或凭证泄露,攻击者直接横向移动拿下整个集群。

CNCF 2025 安全报告显示,67% 的 Kubernetes 安全事件与过度授权的 RBAC 配置直接相关。最小权限原则人人会说,但真正落地需要系统化方法。

方案

5 步渐进式收紧策略,在不影响业务的前...

Read more

Grafana Mimir 实战:Prometheus 大规模长期存储的终极方案

痛点

运维监控体系发展到一定规模后,Prometheus 单机存储瓶颈就成了无法回避的问题:

  • 存储容量有限:默认本地 TSDB 保留 15 天数据,磁盘扩到 TB 级后性能急剧下降
  • 无法水平扩展:单个 Prometheus 实例承载上万 series 后内存飙升,OOM 频发
  • 多集群数据孤岛:10+ 个 K8s 集群各跑一套 Prometheus,跨集群查询基本不可能
  • 高可用缺失:Prometheus 挂了就丢数据,双副本方案数据不一致

Thanos 是早期方案,但 Sidecar 模式运维复杂、Compactor 单点问题让人头疼。2022 年 Grafana Labs 开源了 G...

Read more