技术岗招聘|开发·运维·测试·数据
24 subscribers
78 photos
52 links
技术岗招聘:开发、测试、运维、数据、安全,国内、海外到岗与远程,每条附岗位解读。招聘总站 @RemoteJobsHubCN · 联系 @BDHT1
Download Telegram
OpenTelemetry 正式毕业,观测体系进入企业级成熟阶段

OpenTelemetry 已在 2026 年 5 月获 CNCF 正式毕业,和 Kubernetes、Prometheus 并列为成熟开源项目。毕业意味着其追踪、指标、日志以及新加入的 Profiling 信号已具备生产级稳定性、完整的治理与安全审计,且拥有跨语言的 API 与 Collector 实现。对运维团队而言,这是一把可以直接在生产环境中使用的统一观测标准钥匙。

过去,各厂商的观测库互不兼容,切换供应商需要大规模改写代码。OpenTelemetry 通过统一规范消除了这种锁定,支持在同一链路上关联 Trace、Log 与 Metric,帮助你快速定位跨服务故障。现在,GitHub、Farfetch 等大厂已在生产环境使用,社区活跃度和文档成熟度也达标,企业无需再为观测方案的选型和迁移担忧。

后续 OpenTelemetry 将继续扩展:新增对生成式 AI 工作流的语义约定、浏览器与移动端观测支持,以及 Weaver、OpenTelemetry Packaging、Injector 等工具,帮助团队在大规模环境下统一遥测 schema、简化部署并实现零代码埋点。若你的系统仍在使用碎片化的监控方案,立即评估并迁移到 OpenTelemetry,可省去后期的集成与维护成本。

#DevOps #运维 #OpenTelemetry #CNCF #Observability #Tracing #Metrics #Logs @DevOps实战
@DevOpsTalkCN
OpenTelemetry Go 日志 API 进入 RC 阶段,准备稳定 v1 兼容

OpenTelemetry Go v1.47.0‑rc.1 将日志 API 与 SDK 从 beta(v0.22.0)提升为 Release Candidate。此版本统一了版本号,和其他 Go 模块保持一致,意味着在正式稳定前,社区可以在真实业务中全面验证。

日志模块现在包括 go.opentelemetry.io/otel/log 与 go.opentelemetry.io/otel/sdk/log,并在根包新增 Logger、GetLoggerProvider、SetLoggerProvider,全局日志访问方式与 tracer、meter 保持一致。导出器和 logtest 仍保持实验性质,不在本次 RC 的稳定范围。

对运维和平台工程师而言,这一升级直接影响日志采集链路的可靠性与性能:
- 兼容性:使用相同的 go get 命令即可切换到 RC,避免大幅代码改动。
- 性能:BatchProcessor 采用有界队列,降低日志写入时的阻塞与 GC 压力,适合高并发服务。
- 可观测性统一:日志、追踪、指标共享相同的 Provider、Processor、Exporter 模型,便于统一治理和告警。

go get go.opentelemetry.io/otel@v1.47.0-rc.1
go get go.opentelemetry.io/otel/log@v1.47.0-rc.1
go get go.opentelemetry.io/otel/sdk/log@v1.47.0-rc.1


请在实际环境中验证关键路径:直接 API 调用、日志桥接、自定义 Processor/Exporter、海量日志写入、属性限制以及应用关闭时的 flush 行为。若发现问题,请在 OpenTelemetry Go 仓库提交 Issue,附上 RC 版本、Go 版本、最小复现代码以及期望行为。社区将在至少 14 天的反馈窗口后决定是否进入正式稳定。

#DevOps #运维 #OpenTelemetry #Go #日志 #RC #Observability #Tracing #Metrics @DevOps实战
@DevOpsTalkCN
状态感知检测:提升云原生运行时安全的关键手段

在 AI 驱动的攻击日益自动化的今天,传统基于单一事件的检测已难以及时阻止威胁。Sysdig 的状态感知检测通过关联多步骤行为(如在容器中打开终端、下载二进制并执行),在攻击链早期即判定恶意意图,显著降低误报噪声,帮助安全团队在几分钟内完成调查并自动化响应。

这种检测方式对运维有直接价值:
- 在容器调试与真实攻击之间提供上下文区分,避免安全工程师被海量普通日志淹没。
- 通过 Falco 规则的 obs.occurs 与 obs.link 关联多阶段行为,能够在攻击完成前触发自动化防御(如 kill -9 进程或直接终止容器),缩短响应窗口。
- 采用状态感知检测的组织已在 91% 的云环境中部署,报告显示可将调查时间缩短近一半,且自动化响应启用率仍有提升空间。

如果你的集群已经使用 Falco,考虑在规则中加入观察(observation)与关联(link)字段,构建多阶段攻击的完整画像;若尚未使用,可参考 Sysdig 文档中的示例规则快速上手。

示例 Falco 规则结构

- macro: spawned_process 检测 execve 系统调用
- observation: Launch Process 记录进程启动
- obs_link_fields: same_session 通过 proc.sid 关联同一会话
- rule: Spawn Package Management Program 使用 obs.occurs 与 obs.link 判断终端打开后是否紧随软件包管理操作


通过上述方式,安全团队能够在攻击链的关键节点获得高置信度信号,进而在不影响业务的前提下实现快速、自动化的防御。

#DevOps #运维 #云原生 #Falco #状态感知检测 #运行时安全 #自动化响应 @DevOps实战
@DevOpsTalkCN
Kubernetes 可观测性:从指标到根因定位

在 K8s 环境中,单纯的仪表盘已难以帮助运维快速定位故障。指标只能告诉你“出现异常”,而无法解释异常来源、影响范围或根本原因。真正的可观测性要求把指标、日志、链路追踪和 profiling 等信号统一收集、关联,形成从表面症状到内部行为的完整画像。这样,运维在处理跨服务、跨节点的复杂故障时,能够直接在基础设施状态、工作负载行为和请求流之间追踪证据,而不必在多个无关图表和终端命令之间来回切换。

- 指标是首选入口,适合监控节点压力、Pod 重启、API Server 延迟等常规健康检查,常用 RED(Rate、Errors、Duration)和 USE(Utilization、Saturation、Errors)模型帮助快速绘制故障轮廓。
- 日志提供事件细节。结构化日志保留时间戳、严重级别、服务名、命名空间、Pod 标识等字段,可在出现异常时快速检索到具体错误信息,如超时、异常码或依赖故障。
- 链路追踪和 profiling 则补足了跨服务调用的时序信息,帮助判断是下游依赖慢、重试循环还是控制平面瓶颈导致的延迟。


对运维而言,这套组合意味着在出现异常时不再盲目猜测,而是通过统一的查询平台直接定位到出问题的服务、具体请求或代码路径,从而缩短排查时间、降低误报率,并在制定 SLO/错误预算时拥有更可靠的数据支撑。前置条件是部署相应的采集组件(如 Prometheus、Grafana、OpenTelemetry)并统一日志格式,成本主要在于信号存储与查询资源的规划。

#DevOps #运维 #Kubernetes #Observability #Prometheus #OpenTelemetry #日志 #链路追踪
@DevOpsTalkCN
平台接口成熟度:从手工脚本到真正自助

大多数平台工程团队要么仍在手工脚本、部落知识的第 1 层,要么已经搭建了金丝雀路径、CLI 等标准工具,却仍被“例外请求”拖慢。关键不是是否已有平台,而是开发者如何与平台交互——这决定了是否真的实现自助。

CNCF 的平台工程成熟度模型把“接口”划分为四个层级:

- Level 1 自定义流程:所有能力通过人工请求、个人经验传递,缺乏统一入口。即便没有正式平台,也已经处在此阶段。
- Level 2 标准工具:提供统一的金丝雀路径、文档模板和 CLI,能够覆盖常规需求。采纳率提升、上手更快,但任何金丝雀路径外的需求仍需平台团队手动介入,形成瓶颈。
- Level 3 自助服务:实现“一键式”供应,开发者不再提交例外工单,例外请求量下降 40‑60%。平台团队从处理单个请求转向完善自助框架。
- Level 4 集成服务:平台能力透明嵌入开发者日常工具,基础设施配置自动完成,开发者几乎感受不到平台的存在。

常见卡点
- 队列问题:金丝雀路径只能覆盖约 70% 的工作,剩余 30% 的边缘需求会堆积成平台团队的待办,反而增加了运维负担。
- 专业度问题:平台团队缺乏特定业务(如流式处理、金融合规)的深度经验,导致交付的能力难以满足专业团队需求,进而被绕开或自行实现。


提升路径
1. 评估当前接口层级,明确哪些需求仍落在金丝雀路径之外。
2. 将高频的例外请求抽象为自助模板或插件,逐步向 Level 3 迁移。
3. 与业务专家共建关键能力,确保平台提供的模块具备足够的专业深度。
4. 推进自动化集成,让监控、日志、安全等配置在资源创建时即被注入,向 Level 4 靠拢。

#DevOps #运维 #平台工程 #CNCF #接口成熟度 #自助服务 #金丝雀路径 #自动化集成
@DevOpsTalkCN
迁移文件不受 Git 保护:为何审查、冲突与回滚失效

在代码仓库里,Git 管理代码文件,而迁移目录本身是一个时间戳顺序的只追加日志,拥有独立的数据库状态追踪。两套系统共存却不同步,导致 Git 的常规保护在迁移上失效。

迁移文件本质上是不可编辑的事件日志。Git 能随意修改、回滚文件,但实际的数据库状态不会随之改变,因而“git revert”只删文件,数据库仍保留变更;分支切换时本地数据库保持最新状态,导致代码与数据库状态不匹配,常出现 “本机可用/线上失效” 的问题。

冲突检测也失效。若两个分支各自新增针对同一表的迁移,文件名不同、内容不冲突,Git 合并顺利完成,但两条迁移在数据库层面可能互相冲突,合并后只有运行时才会暴露错误。合并顺序与实际执行顺序不一致时,仓库记录的时间线与数据库执行的顺序会出现偏差,进一步加剧不一致。

解决思路是为仓库再加入声明式 schema 文件(如 schema.rb、schema.prisma),让 Git 能对可读的声明式文件进行差异审查、冲突检测和回滚。该文件由迁移回放生成,提供当前预期的完整结构,虽不能捕获实际数据库漂移,但能恢复 Git 对文件的保护机制。

要点
- 迁移目录是只追加的事件日志,Git 只能提供存储与排序,无法提供冲突、回滚等安全保障。
- 代码审查时只能看到增量 SQL,缺乏对目标表结构的上下文,容易遗漏兼容性问题。
- 合并顺序与执行顺序不一致会导致仓库时间线与数据库实际状态不匹配。
- 引入声明式 schema 快照文件,让 Git 能对完整结构进行差异化审查,恢复冲突检测与回滚能力。


GitHub

#DevOps #运维 #Git #数据库迁移 #Schema管理 #CICD #代码审查 #回滚安全 @DevOpsChannel
@DevOpsTalkCN
Metal3 + KubeVirtBMC:让 KubeVirt VM 像裸金属一样被 Metal3 管理

Metal3 通过 OpenStack Ironic 实现裸金属主机的全生命周期管理,KubeVirtBMC 则为 KubeVirt VM 提供虚拟 BMC 接口。把两者组合后,Metal3 可以把普通的 KubeVirt 虚拟机当作裸金属服务器来声明、开机、写入镜像,整个流程在同一个 Kubernetes 集群内完成,适用于需要在 CI 环境或测试集群中复现裸金属部署场景的团队。

实现步骤概览
- 前置条件:一套已启用嵌套虚拟化或裸金属的 K8s 集群,安装好 KubeVirt 与存储供给,准备好 kubectl、helm、kustomize。
- 安装 cert‑manager:Metal3 与 KubeVirtBMC 都依赖 webhook 证书。
- 部署 KubeVirtBMC:通过 Helm 安装后,可在 kubevirtbmc-system 命名空间看到 BMC 控制器。
- 创建带 BMC 的 VM:使用 runStrategy: Halted 保持 VM 关闭状态,手动指定 MAC 地址以匹配 BareMetalHost 的 bootMACAddress,并为 BMC 创建凭据 Secret。
- 部署 Metal3(Ironic + BMO):使用 Ironic Standalone Operator 部署 Ironic,配合 cert‑manager 生成自签 TLS 证书并创建 API 凭据。随后通过 kustomize 部署 Bare Metal Operator。

关键细节

1. BMC 地址:创建好的 VirtualMachineBMC 会生成一个 ClusterIP Service(如 metal3-demo-vm-virtbmc.default.svc.cluster.local),Metal3 通过 IPMI/Redfish 与其通信,完全透明。
2. MAC 匹配:BareMetalHost 必须声明 bootMACAddress,而该 MAC 必须在 VM 的网络接口中显式设置,否则 Metal3 无法识别并会报错。
3. 镜像写入:Metal3 在 Ironic 中创建 Image 资源后,会通过 Redfish 将 ISO 挂载到 VM 的虚拟 CDROM,随后触发 VM 开机完成 OS 安装。
4. 全链路自动化:从创建 PVC、VM、BMC 到 BareMetalHost、Image、Provisioning,全部可写入 GitOps 代码库,实现一次提交全流程自动化。


完成上述配置后,Metal3 会把 KubeVirt VM 当作裸金属主机进行电源控制、镜像写入和状态上报,运维人员无需区分真实硬件与虚拟机,既能在本地集群快速验证裸金属部署脚本,又能在 CI 中复现生产环境的硬件交付流程。

GitHub

#DevOps #运维 #Metal3 #KubeVirtBMC #Ironic #BareMetalHost #Redfish #IPMI #Kubernetes @DevOps实战
@DevOpsTalkCN
用 DBeaver 快速导入 Northwind 示例库到 PostgreSQL

在本地或测试环境需要一套完整的业务数据模型时,Northwind 是经典的练手库。下面演示如何使用 DBeaver Enterprise 26.1.0 将其导入 PostgreSQL,帮助你快速搭建查询练习或演示环境。

1. 从 GitHub 下载完整的 SQL 脚本
GitHub

2. 在 DBeaver 中打开该文件(Enterprise 版 26.1.0),可以直接浏览结构和示例数据。

3. 使用快捷键 Alt + X 执行脚本,DBeaver 会依次创建表、约束并写入初始数据。执行完毕后会在下方显示执行报告,确认无错误即可。

4. 验证加载成功,尝试一条简单查询:
```sql
SELECT customer_id, company_name, city, country
FROM customers
WHERE country = 'Germany';
```
若返回德国客户列表,说明库已就绪,可用于后续的 SQL 练习、性能基准或 CI 流水线中的数据准备。

通过这种方式,你可以在本地快速获得一套真实业务数据,省去手动建表和插入的繁琐,适合作为教学、原型验证或 CI 环境的种子数据。


#DevOps #运维 #PostgreSQL #DBeaver #Northwind #SQL练习 @DevOps实战频道
@DevOpsTalkCN
自动化 AWS 托管服务的计划生命周期升级

AWS Health 会通过 Planned Lifecycle Events(PLE)提醒托管服务版本即将进入标准支持结束期。传统做法需要运维团队手动遍历所有账号和区域,定位受影响资源、确认目标版本、检查兼容性并更新 IaC 定义,工作量随服务数量呈指数增长。AWS DevOps Agent 搭配 Kiro 将这一流程全链路自动化:

- 检测:EventBridge 捕获 AWS_EKS_PLANNED_LIFECYCLE_EVENT(或其他服务的同类事件),触发 Lambda 将事件信息推送至 DevOps Agent。
- 调查:Agent 运行对应的升级规划 skill,自动发现集群拓扑、校验版本递增、检查 addon 兼容、扫描废弃 API,并生成结构化的 CDK Change Spec,包含目标版本、回滚窗口、可行性评估和风险评级。
- 代码生成与验证:通过第二条 EventBridge 规则,Lambda 读取调查日志,提取符合格式的 CLUSTER_VERSION 块,构造简洁的 JSON 负载并调用 GitHub Actions 工作流。工作流在 Kiro CLI 环境下验证 spec(版本格式、层包、addon 版本),仅在可行性为 READY 时继续执行。
- PR 与部署:验证通过后,Kiro 自动在代码库中创建 PR,供工程师审阅。若部署失败,事件再次回流触发根因分析、自动生成修复代码并打开新的 PR,实现闭环的自愈升级。


对运维团队而言,这意味着 从手动排查、手工修改 IaC 到审阅自动生成的 PR,大幅降低人力成本和误操作风险,只需在 PR 阶段进行业务层面的确认即可。前置条件是已有 EventBridge、Lambda 与 GitHub Secrets 配置,以及对目标服务的升级路径有明确的兼容性策略。

#DevOps #运维 #AWSHealth #AWSDevOpsAgent #Kiro #EventBridge #IaC #CI_CD
@DevOpsTalkCN
继承不良数据库:先别慌,先排查再改进

在数据团队里,继承一个“坏”数据库几乎是必经之路。常见症状包括:编码不统一、表列过多、缺失索引、无约束导致数据不一致等。面对这种情况,先别急着责怪谁,而是先把问题拆解成可量化的小目标,逐步修复。

1. 先做全景检查
- 用 pg_dump、pgAdmin 或 DBeaver 导出 schema,结合 pg_stat_activity、pg_stat_statements 查看运行时行为。
- 通过探索性查询快速定位热点表和慢查询,确认是否需要分区或索引。

2. 小步快改,记录每一步
- 每次改动都要有可测量的目标(如查询响应时间下降 20%)。
- 记录改动原因、执行命令、预期效果,方便后续回溯。

3. 自动化运维
- 在完成修复后,配置高可用、灾备和定期维护脚本。
- 将最佳实践写成团队手册,避免单点知识。

4. 提前规划,避免灾难
- 不等到数据丢失才做备份;不等到宕机才考虑 HA;不等到 bloat 才调优 autovacuum;不等到账单爆炸才优化成本。

这套流程适用于任何 PostgreSQL 环境,尤其是缺乏 DBA 或历史遗留问题严重的项目。先把问题拆解、逐步修复,再通过自动化和文档化把风险降到最低。


youtube.com/watch?v=nI1KjJjun3c
All right, so you inherited a bad database... (PDF)

#DevOps #运维 #PostgreSQL #数据库维护 #高可用 #灾备 #自动化 #性能调优 #架构实践 #数据治理 #pg_dump #pg_stat_activity #pg_stat_statements #高可用 #灾备 #自动化 #性能调优 #架构实践 #数据治理 #pg_dump #pg_stat_activity #pg_stat_statements @频道号
@DevOpsTalkCN
在默认命名空间迁移关键服务:零停机的 ExternalName 方案

在集群中,常常会出现一些早期误放在默认命名空间的部署。它们被其他服务频繁调用,若要迁移到专属命名空间,传统做法会导致停机或复杂的多团队协调。
解决思路:先把目标服务(如 auth‑svc)部署到新命名空间,然后把旧 Service 对象改为 ExternalName,指向新地址。这样所有通过 auth‑svc.default.svc.cluster.local 访问的内部流量都会被无缝转发到新位置,外部流量仍通过旧 Ingress 继续工作,直到新 Ingress 验证无误后再删除旧 Ingress。

操作步骤

1. 部署新实例:在 authentication 命名空间创建 auth‑svc。
2. 创建 ExternalName:
```yaml
apiVersion: v1
kind: Service
metadata:
name: auth-svc
namespace: default
spec:
type: ExternalName
externalName: auth-svc.authentication.svc.cluster.local
```
旧 Service 现在仅是 DNS 前缀的转发器。
3. 监控流量:确认 auth‑svc.default.svc.cluster.local 的请求已落到新部署,检查日志、指标,确保无错误。
4. 缩容旧 Pod:先把旧 Pod 缩容到 0,保留为回滚保险。
5. 处理 Ingress:为新命名空间临时注解
```yaml
apiVersion: v1
kind: Namespace
metadata:
name: authentication
annotations:
policy.example.com/allow-duplicate-ingress: "true"
```
在短时间内同时运行旧与新 Ingress,验证流量后删除旧 Ingress。

为什么有效
- 零停机:内部 DNS 解析与外部 Ingress 分离,迁移期间无服务中断。
- 无代码改动:消费者不需要更新任何调用地址。
- 安全回滚:旧 Pod 先缩容到 0,若新部署出现问题可立即恢复。
- 可复用模式:任何通过 DNS 访问的服务都可采用此方案,适用于多团队环境。

适用场景
- 需要迁移已被多服务依赖的关键部署。
- 受限于命名空间策略或 Ingress 规则冲突。
- 需要在生产环境保持高可用性。


资源
GitHub: GitHub

#DevOps #运维 #Kubernetes #ExternalName #Ingress #NamespaceMigration #ZeroDowntime #OPA #Prometheus #Grafana
@DevOpsTalkCN
滚动 OS 补丁:让 PostgreSQL 免受底层重启影响

在 HA 集群中,OS 级补丁(kernel、glibc、container runtime、storage driver)往往会导致 PostgreSQL 进程重启,传统的维护窗口无法满足 24/7 业务。
解决方案:在 Patroni 管理的 HA 集群里,按节点顺序进行滚动补丁。
1. 构建:使用相同的 PostgreSQL 版本、配置和数据,唯一差异是 OS 层。
2. 补丁:先把补丁应用到从节点,停止 Patroni,换成新镜像,让其重新加入并同步。
3. 切换:所有从节点补丁完成后,执行受控切换(switchover),让主节点指向已补丁节点。
4. 补丁主节点:把旧主节点也换成新镜像,随后作为从节点重新加入。

安全保障

- 连接路由(LB、PgBouncer 或 VIP)跟随 leader,避免应用层改动。
- 切换前确认复制已同步,避免落后节点切换。
- 真实健康检查与法定节点数保证切换期间保持 quorum。
- 镜像可复现,避免因配置漂移导致切换失败。

效果
- 主节点不重启,PostgreSQL 二进制、配置、数据不变。
- 切换仅短暂停顿(秒级),比单节点重启省时显著。
- 适用于需要快速补丁、合规性要求高的业务。

前置条件
- 至少有一台从节点。
- 已测试切换流程。


结论
将 OS 补丁视为底层滚动操作,而非数据库维护窗口。构建可滚动补丁的 HA 集群后,补丁夜不再是停机事件,安全与 SLA 同时满足。

#DevOps #运维 #PostgreSQL #Patroni #滚动补丁 #HA #容器 #云原生 #可观测性
@DevOpsTalkCN
RapidFort 与 CrowdStrike 合作 自动化容器硬化

RapidFort 已将其容器漏洞修复平台与 CrowdStrike Falcon Cloud Security 集成。通过该集成,RapidFort 能够直接从 Falcon 读取漏洞信息和 SBOM(软件物料清单),并基于这些数据自动重建容器镜像。重建后的镜像不需要修改应用代码,即可在现有 Kubernetes 环境中替换使用,适用于无法升级集群版本的场景。

RapidFort Runtime 进一步监控容器内的开源软件,检测未授权或意外变更,并评估新披露 CVE 的影响。这样,DevSecOps 团队可以在发现漏洞后快速得到可验证的修复镜像,缩短从扫描到修复的周期。

关键点

1. 直接从 CrowdStrike Falcon 读取漏洞与 SBOM
2. 自动重建镜像,无需改动应用代码
3. 支持旧版 Kubernetes 运行
4. Runtime 监控实时变更与 CVE 影响
5. 适合频繁替换容器的 DevSecOps 场景


#DevOps #运维 #RapidFort #CrowdStrike #FalconCloudSecurity #容器安全 #SBOM #漏洞修复 #Kubernetes #Runtime监控
@DevOpsTalkCN