AWS Load Balancer Controller 默认一个 Ingress 一个 ALB。共用 ALB 有三种做法:IngressGroup、TargetGroupBinding,以及 v3.0.0 起 GA 的 Gateway API。
Pod 短名称解析和 ndots:5 的查询放大
Pod 里的短名称靠 resolv.conf 的 search 域和 ndots:5 补全,外部域名要先拼上每个后缀各查一遍:kind 里解析一次 api.github.com 发了 8 个查询,带上 EKS 节点的后缀是 10 个。
Spring Boot actuator 用业务端口还是单独的管理端口
actuator 可以与业务共用端口,也可以通过单独管理端口运行。单独端口能隔离外部流量并统一指标路径,但会引入独立的内嵌 Web 服务与线程池;探针若未配置回主端口可能出现健康误报,采集端口也需在 Service 与 ServiceMonitor 中对齐。
Jenkins 部署从 push 改成 pull:VM 按 digest 自己拉镜像
Jenkins 用 SSH 登录 VM 部署,登录所有目标机的凭据和应用配置都集中在 CI 控制器上。方向反过来之后,控制器被攻破也登录不了生产机,代价在部署结果的反馈、有顺序的部署、每台 VM 上的部署脚本。K8s 上这已是主流,VM 上也有先例。
清理共享 Redis 里的旧缓存 key:Lua 分批 UNLINK、SLOWLOG 验证,以及 ElastiCache 和 cluster 模式下的差异
旧缓存 key 没有 TTL,其中一类的 key 名就是明文 API key。自建单机上用 SCAN 盘点、Lua 分批 UNLINK、SLOWLOG 验证;ElastiCache 上查配置和监控的方式不同,cluster 模式还要逐个主节点执行。
用 mise 统一多语言多版本管理:从 SDKMAN 与 nvm 迁移
多语言开发中分别维护 SDKMAN、nvm、pyenv 容易带来 shell 启动卡顿与配置割裂,mise 依托高性能运行时与单一声明式配置,能够统一管理 Java、Node.js、Go 等工具版本与环境变量,精简本地环境维护成本。
MySQL 8.4 字符集与排序规则选型:存储、比较行为与索引开销的取舍
MySQL 8.4 LTS 默认采用 utf8mb4 与 utf8mb4_0900_ai_ci,在评估存储与索引前缀限制、NO PAD 尾随空格语义以及 BINARY 紧凑存储的取舍后,跨表统一排序规则是避免隐式转换导致索引失效的关键底线。
用 herdr 管理多台 Mac 上的 coding agent
herdr 的 server 持有终端,靠屏幕特征识别 coding agent 状态,saved machine 把几台 Mac 汇总到一个侧栏。远端 server 要经 remote-client-bridge 拉起才能常驻,pane 环境也要自己补齐。
Logstash 写 OpenSearch 被 WAF 拦截引发的端到端背压
Logstash 经 Cloudflare 写 OpenSearch,WAF 按内容拦下两批 _bulk,插件对同一批无限重发,背压传回 filebeat,两个非生产命名空间的日志停了将近 29 小时。重启只能临时疏通,要在 Cloudflare 加跳过规则。
ZooKeeper 顺序节点计数器溢出导致 ClickHouse 复制表无法写入
复制表的每次 INSERT 和 merge 都在 ZooKeeper 的 log/ 下用掉一个 int32 序号。lab 上把计数器推到上限之后,INSERT 全报 Node exists,merge 失败,读照常;照原表建新表、把分区挂过去就能恢复写入。