Apache Pulsar TLS 证书认证:从客户端证书签发到 Broker、Proxy 与各语言客户端的完整配置实践
消息队列后端流处理【免费下载链接】pulsarApache Pulsar - distributed pub-sub messaging system项目地址https://gitcode.com/gh_mirrors/pulsar28/pulsar点击查看免费下载TLS 证书认证是 Apache Pulsar 在 TLS 传输加密基础上构建的客户端身份认证机制不仅服务端持有证书供客户端验证客户端也持有一张由同一证书权威CA签发的证书其 Common NameCN即代表客户端的“角色令牌”role tokenBroker 以此完成身份识别。本文基于 Pulsar 2.3.0 版本文档 security-tls-authentication.md 展开完整覆盖客户端证书生成的 openssl 操作流程、Broker/Proxy 侧配置以及 CLI、Java、Python、C、Node.js、C# 六种客户端接入方式并结合当前仓库源码如 AuthenticationProviderTls、AuthenticationTls剖析“CN 如何变成角色名”的底层实现帮助你既能照做落地、又知其所以然。TLS 认证概述与 TLS 传输加密的关系TLS 认证TLS authentication是 TLS 传输加密TLS transport encryption的扩展。两者的关键区别在于证书校验的方向TLS 传输加密只有服务端持有密钥和证书客户端用 CA 证书验证服务端身份TLS 认证客户端同样持有密钥和证书服务端用 CA 证书验证客户端身份实现双向 TLSmTLS式的身份认证。前置条件很明确必须先完成集群的 TLS 传输加密配置本文假定你已按 TLS 传输加密文档 完成了 Broker 端 TLS 证书tlsCertificateFilePath、tlsKeyFilePath、tlsTrustCertsFilePath的准备。两个关键差异点值得注意客户端证书的 CN 就是角色令牌客户端证书与服务器证书都由同一个 CA 签发但客户端证书在生成 CSR 时Common Name 填写的不是主机名而是希望该客户端以其身份认证的角色名role token例如admin。Broker 必须开启客户端证书强制校验需要设置tlsRequireTrustedClientCertOnConnecttrue。从源码 ServiceConfiguration.java#L1347-L1351 可以看到该参数的定义与默认值FieldContext( category CATEGORY_TLS, doc Specify whether Client certificates are required for TLS Reject.\n the Connection if the Client Certificate is not trusted) private boolean tlsRequireTrustedClientCertOnConnect false;其语义是要求客户端必须携带受信任的证书建立 TLS 连接否则拒绝该连接——这正是 TLS 认证能“拒绝未认证客户端”的开关。另外Pulsar 的 TLS 相关密码套件和算法由Bouncy Castle Provider提供。如果你的环境要求 FIPS 合规版本可参考文档同目录下的 Bouncy Castle 相关章节security-bouncy-castle 一节的链接索引中提及该文档在当前版本目录中需以仓库实际存在的 security 系列文档为准。创建客户端证书openssl 完整流程客户端证书生成流程共四步生成私钥 → 转换为 PKCS 8 → 生成 CSR → 用 CA 签名。以下命令与原文档完全一致可直接照抄执行将/path/my-ca/替换为你的 CA 目录将admin替换为目标角色名。第一步生成 RSA 私钥$ openssl genrsa -out admin.key.pem 2048与 Broker 侧证书相同客户端同样期望私钥为 PKCS 8 格式因此需要转换$ openssl pkcs8 -topk8 -inform PEM -outform PEM \ -in admin.key.pem -out admin.key-pk8.pem -nocrypt注意后续配置中引用的私钥文件是转换后的admin.key-pk8.pem而不是原始的admin.key.pem。第二步生成证书签名请求CSR$ openssl req -config openssl.cnf \ -key admin.key.pem -new -sha256 -out admin.csr.pem执行时 openssl 会依次询问组织、城市、Common Name等信息。这里最关键的一步是Common Name 必须填写你希望该密钥对认证为哪个角色令牌例如admin因为这就是之后 Pulsar 中客户端的“身份名”。如果手头没有openssl.cnf请参照 TLS 传输加密文档中的“Certificate authority”一节 获取标准配置。第三步使用 CA 签名客户端证书$ openssl ca -config openssl.cnf -extensions usr_cert \ -days 1000 -notext -md sha256 \ -in admin.csr.pem -out admin.cert.pem注意-extensions usr_cert参数客户端证书使用usr_cert扩展对应 extendedKeyUsage 中的 clientAuth使该证书可被用于客户端认证场景——这是客户端证书与服务器证书在扩展用途上的核心区别。执行成功后得到两个产物证书admin.cert.pem密钥admin.key-pk8.pem客户端凭此证书 密钥 CA 证书ca.cert.pem即可向 Broker 和 Proxy 证明自己是角色admin。排错CA 私钥缺失如果签名步骤报unable to load CA private key且原因是No such file or directory: /etc/pki/CA/private/cakey.pem可执行以下命令生成cakey.pem$ cd /etc/pki/tls/misc/CA $ ./CA -newca源码深读Broker 如何把 CN 变成角色令牌配置项只是“外壳”真正执行认证逻辑的是 Broker 侧的认证 Provider。当前仓库中对应实现为 AuthenticationProviderTls.java其authenticate方法#L52-L105的核心逻辑与证书生成流程一一对应Certificate[] certs authData.getTlsCertificates(); if (null certs) { errorCode ErrorCode.INVALID_CERTS; throw new AuthenticationException(Failed to get TLS certificates from client); } String distinguishedName ((X509Certificate) certs[0]).getSubjectX500Principal().getName(); for (String keyValueStr : distinguishedName.split(,)) { String[] keyValue keyValueStr.split(, 2); if (keyValue.length 2 CN.equals(keyValue[0]) !keyValue[1].isEmpty()) { commonName keyValue[1]; break; } } // ... return commonName; // 返回的字符串即客户端的角色令牌要点解析Provider 从 TLS 层拿到的客户端证书链中取第一张证书certs[0]即客户端自证书解析其 X.500 主体名Distinguished NameRFC 2253 格式形如CNadmin,O...逐项split(,)后匹配CN前缀方法最终返回 CN 值作为角色名交由后续授权authorization流程判定该角色是否有权限。这也解释了为什么生成 CSR 时 CN 必须填角色令牌——Broker 端并不做任何“CN 到角色”的映射表CN 就是角色失败路径会区分INVALID_CERTS未拿到证书与INVALID_CN证书中无有效 CN两类错误码并计入AuthenticationMetrics指标便于通过监控排查认证失败原因。对应地客户端侧的认证插件实现为 AuthenticationTls.java#L40-L121。它接受tlsCertFile和tlsKeyFile两个参数见 #L118-L121private void setAuthParams(MapString, String authParams) { certFilePath authParams.get(tlsCertFile); keyFilePath authParams.get(tlsKeyFile); }其configure方法#L93-L105先尝试按 JSON 解析参数串失败则回退到k1:v1,k2:v2的旧式格式解析——这就是下文 broker.conf 中brokerClientAuthenticationParameters既能用 JSON 字符串、CLIclient.conf中又用逗号分隔格式的原因。在 Broker 上启用 TLS 认证在broker.conf中于既有 TLS 传输加密配置基础上追加以下参数完整参数说明见 TLS broker 配置# Configuration to enable authentication authenticationEnabledtrue authenticationProvidersorg.apache.pulsar.broker.authentication.AuthenticationProviderTls # operations and publish/consume from all topics superUserRolesadmin # Authentication settings of the broker itself. Used when the broker connects to other brokers, either in same or other clusters brokerClientTlsEnabledtrue brokerClientAuthenticationPluginorg.apache.pulsar.client.impl.auth.AuthenticationTls brokerClientAuthenticationParameters{tlsCertFile:/path/my-ca/admin.cert.pem,tlsKeyFile:/path/my-ca/admin.key-pk8.pem} brokerClientTrustCertsFilePath/path/my-ca/certs/ca.cert.pem逐项解读参数作用authenticationEnabledtrue开启认证总开关见 ServiceConfiguration.java#L1358authenticationProviders...AuthenticationProviderTls指定认证 Provider 为 TLS 证书 ProviderProvider 为类名列表superUserRolesadmin将角色admin设为超级用户可执行所有管理操作并在所有主题上发布/消费若不开启 authorization则至少需要一个 super user 才能管理集群brokerClientTlsEnabledtrueBroker 作为客户端连接其他 Broker同集群或跨集群时使用 TLSbrokerClientAuthenticationPluginBroker 间连接使用的客户端认证插件即AuthenticationTlsbrokerClientAuthenticationParametersBroker 身份所用的证书/密钥路径JSON 格式Broker 之间互连时其 CN 同样充当角色令牌brokerClientTrustCertsFilePathBroker 互连时信任的 CA 证书路径同时别忘了前文提到的前置开关# 要求客户端必须携带受信任证书否则拒绝 TLS 连接 tlsRequireTrustedClientCertOnConnecttrue # 以及 TLS 传输加密本身的三项tlsCertificateFilePath / tlsKeyFilePath / tlsTrustCertsFilePath这三项在仓库自带的 conf/broker.conf 中均以注释形式预置例如tlsTrustCertsFilePath附近的注释说明了“只有该文件中的证书才被允许连接服务端”。在 Proxy 上启用 TLS 认证Proxy 同时扮演两个角色面向客户端的服务端验证客户端证书、面向 Broker 的客户端出示自己的证书。因此 Proxy 的证书对需要在Broker 侧登记为proxyRoles。从 ServiceConfiguration.java#L1390-L1395 可以看到该参数的语义定义FieldContext( category CATEGORY_AUTHORIZATION, doc Role names that are treated as proxy roles. \n\nIf the broker sees a request with role as proxyRoles - it will demand to see the original client role or certificate.) private SetString proxyRoles new TreeSet();即当 Broker 看到来自proxyRoles中某角色的请求时会进一步要求出示原始客户端的角色或证书从而防止 Proxy 自身身份被冒充。授权细节见 授权文档。在proxy.conf中追加以下参数同样叠加在 TLS 传输加密的 proxy 配置之上# For clients connecting to the proxy authenticationEnabledtrue authenticationProvidersorg.apache.pulsar.broker.authentication.AuthenticationProviderTls # For the proxy to connect to brokers brokerClientAuthenticationPluginorg.apache.pulsar.client.impl.auth.AuthenticationTls brokerClientAuthenticationParameterstlsCertFile:/path/to/proxy.cert.pem,tlsKeyFile:/path/to/proxy.key-pk8.pem这里proxy.cert.pem的 CN 是 Proxy 自己的角色令牌如proxy该令牌必须出现在 Broker 的proxyRoles配置中。仓库自带的 conf/proxy.conf 同样预置了tlsTrustCertsFilePath等 TLS 相关参数可供参考。客户端配置启用 TLS 认证后客户端一律走 TLS 传输。URL 约定如下Web 服务 URLhttps://8443端口Broker 服务 URLpulsarssl://6651端口CLI 工具pulsar-admin / pulsar-perf / pulsar-clientpulsar-admin、pulsar-perf、pulsar-client等命令行工具读取 Pulsar 安装目录下的conf/client.conf配置文件。仓库自带的 conf/client.conf 中已预留了认证相关注释行如authPluginorg.apache.pulsar.client.impl.auth.AuthenticationTls、authParamstlsCertFile:/path/to/client-cert.pem,tlsKeyFile:/path/to/client-key.pem。在该文件中追加webServiceUrlhttps://broker.example.com:8443/ brokerServiceUrlpulsarssl://broker.example.com:6651/ useTlstrue tlsAllowInsecureConnectionfalse tlsTrustCertsFilePath/path/to/ca.cert.pem authPluginorg.apache.pulsar.client.impl.auth.AuthenticationTls authParamstlsCertFile:/path/to/my-role.cert.pem,tlsKeyFile:/path/to/my-role.key-pk8.pem其中tlsAllowInsecureConnectionfalse表示强制校验 Broker 证书生产环境不建议改为true。Java 客户端import org.apache.pulsar.client.api.PulsarClient; PulsarClient client PulsarClient.builder() .serviceUrl(pulsarssl://broker.example.com:6651/) .enableTls(true) .tlsTrustCertsFilePath(/path/to/ca.cert.pem) .authentication(org.apache.pulsar.client.impl.auth.AuthenticationTls, tlsCertFile:/path/to/my-role.cert.pem,tlsKeyFile:/path/to/my-role.key-pk8.pem) .build();这里authentication(插件类名, 参数串)最终会走到 AuthenticationTls#configure按k:v,k:v格式解析出tlsCertFile/tlsKeyFile。Python 客户端from pulsar import Client, AuthenticationTLS auth AuthenticationTLS(/path/to/my-role.cert.pem, /path/to/my-role.key-pk8.pem) client Client(pulsarssl://broker.example.com:6651/, tls_trust_certs_file_path/path/to/ca.cert.pem, tls_allow_insecure_connectionFalse, authenticationauth)C 客户端#include pulsar/Client.h pulsar::ClientConfiguration config; config.setUseTls(true); config.setTlsTrustCertsFilePath(/path/to/ca.cert.pem); config.setTlsAllowInsecureConnection(false); pulsar::AuthenticationPtr auth pulsar::AuthTls::create(/path/to/my-role.cert.pem, /path/to/my-role.key-pk8.pem); config.setAuth(auth); pulsar::Client client(pulsarssl://broker.example.com:6651/, config);C 客户端源码位于 pulsar-client-cpp 目录AuthenticationTls对应的插件实现可参考 pulsar-client-cpp/lib/auth 目录。Node.js 客户端const Pulsar require(pulsar-client); (async () { const auth new Pulsar.AuthenticationTls({ certificatePath: /path/to/my-role.cert.pem, privateKeyPath: /path/to/my-role.key-pk8.pem, }); const client new Pulsar.Client({ serviceUrl: pulsarssl://broker.example.com:6651/, authentication: auth, tlsTrustCertsFilePath: /path/to/ca.cert.pem, }); })();C# 客户端var clientCertificate new X509Certificate2(admin.pfx); var client PulsarClient.Builder() .AuthenticateUsingClientCertificate(clientCertificate) .Build();注意 C# 客户端使用 PFX 格式的证书文件admin.pfx而非 PEM 证书 PKCS8 密钥的组合。验证与测试参考仓库中的集成测试 ClientAuthenticationTlsTest.java 完整演练了上述配置它先为 Broker 设置tlsKeyFilePath/tlsCertificateFilePath/tlsTrustCertsFilePath再设置setBrokerClientAuthenticationPlugin(AuthenticationTls.class.getName())与setBrokerClientTrustCertsFilePath(...)#L58-L71然后验证带信任证书 TLS 认证构建的PulsarAdmin可正常执行管理操作testAdminWithFull只配了客户端证书密钥、缺少tlsTrustCertsFilePath时请求会因证书链校验失败抛出包含PKIX path的异常testAdminWithCertAndKey——这提醒我们客户端信任 Broker 的 CA 与 Broker 信任客户端的 CA 是两条独立的信任链缺一即失败完全不启用 TLS 的客户端访问 TLS 端点同样被拒绝testAdminWithoutTls。此外AdminApiTlsAuthTest.java、BrokerAdminClientTlsAuthTest.java 以及 Proxy 侧的 AuthedAdminProxyHandlerTest.java、ProxyAuthenticatedProducerConsumerTest.java 分别覆盖了管理 API 与 Proxy 链路的 TLS 认证场景可作为自测脚本的参照。小结TLS 认证链路的完整闭环是CA 签发 CN 为角色令牌的客户端证书usr_cert扩展→ Broker 开启tlsRequireTrustedClientCertOnConnectAuthenticationProviderTls→ Provider 从客户端证书中提取 CN 作为角色 → 授权流程按superUserRoles/proxyRoles判定权限。落地时常见的三个坑私钥忘记转 PKCS 8、CSR 的 CN 误填主机名、Proxy 角色未登记进 Broker 的proxyRoles。按本文的配置清单逐项核对即可在当前仓库版本上完整跑通 TLS 客户端认证。赞分享消息队列后端流处理【免费下载链接】pulsarApache Pulsar - distributed pub-sub messaging system项目地址https://gitcode.com/gh_mirrors/pulsar28/pulsar点击查看免费下载相关推荐如何用 export_model.py 把 happy-llm 第五章训练出的模型 checkpoint 导出为 HuggingFace 格式如何用 export_model.py 把 happy llm 第五章训练出的模型 checkpoint 导出为 HuggingFace 格式 在 happy消息队列后端流处理Apache Pulsar 基于 TLS 的认证配置指南从客户端证书签发到多语言客户端接入Apache Pulsar 基于 TLS 的认证配置指南从客户端证书签发到多语言客户端接入 导读 TLS 认证TLS Authentication是 Ap消息队列后端流处理Apache Pulsar客户端连接验证TLS证书配置检查Apache Pulsar客户端连接验证TLS证书配置检查 你是否在使用Apache Pulsar时遇到过客户端连接失败的问题是否曾因为TLS传输层安全协消息队列后端上一篇OCRmyPDF让扫描PDF重获新生的开源工具下一篇zteOnu完全指南解决光猫管理难题的3个创新方案创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

WordPress.com 阅读器推荐博客开关解析:`useFeedRecommendationsMutation` Hook 实战指南

WordPress.com 阅读器推荐博客开关解析:`useFeedRecommendationsMutation` Hook 实战指南

前端CMS 【免费下载链接】wp-calypso The JavaScript and API powered WordPress.com 项目地址: https://gitcode.com/gh_mirrors/wp/wp-calypso 点击查看 免费下载 本文基于 wp-calypso 仓库中 client/data/reader/use-feed-recommendations-mutation/README.md 编…

2026/9/25 8:12:30 阅读更多 →
绕过输入框禁止粘贴:模拟键盘输入的自动化脚本方案

绕过输入框禁止粘贴:模拟键盘输入的自动化脚本方案

1. 输入框禁止粘贴的底层逻辑与破局思路1.1 为什么有些输入框就是不让粘贴做过自动化工具的人几乎都遇到过这种场景:某个系统的登录页、报名表单或者后台管理界面,密码框和确认密码框死活不接受右键粘贴,甚至连CtrlV都被拦截。你手动敲一遍没…

2026/9/25 8:12:30 阅读更多 →
如何实现闲鱼批量抓取采集自动化?接口层直取数据,比传统爬虫快10倍

如何实现闲鱼批量抓取采集自动化?接口层直取数据,比传统爬虫快10倍

如何实现闲鱼批量抓取采集自动化?接口层直取数据,比传统爬虫快10倍 电商这行,谁的速度快谁吃肉。闲鱼的批量抓取采集,是店群运营中最耗人力也最容易出错的环节。 采集竞品数据是店群运营的命脉。但各大平台的反爬系统越来越强&…

2026/9/25 8:12:30 阅读更多 →

最新新闻

大模型人工智能驱动的芯片物理验证标准平台实战复盘

大模型人工智能驱动的芯片物理验证标准平台实战复盘

如果你负责过一颗芯片流片前的物理验证,一定对Calibre那几十MB的DRC报告不陌生。过去两年我一直在做一件事——把大模型、人工智能技术塞进芯片物理验证流程里,最终落成了一个叫“基于大模型人工智能的芯片物理验证标准系统平台软件”的项目。这个项目名…

2026/9/26 13:05:10 阅读更多 →
RBAC之外:PSA与Seccomp如何守住Kubernetes容器逃逸防线

RBAC之外:PSA与Seccomp如何守住Kubernetes容器逃逸防线

这两年给客户做Kubernetes集群安全巡检,被问到最多的一个问题是:RBAC 都配好了,namespace 也隔离了,为什么还要折腾 Pod 安全准入和 Seccomp 系统调用限制?直到在一次攻击路径演练里,我们通过一个未授权访问…

2026/9/26 13:05:10 阅读更多 →
OpenCV C++正方形检测与透视校正:从编译到卡片拉正

OpenCV C++正方形检测与透视校正:从编译到卡片拉正

简介:一份面向计算机视觉入门与进阶学习者的实战资源,基于开源库OpenCV与C语言,聚焦图像处理与形状识别,覆盖边缘检测、轮廓提取、霍夫变换、阈值分割、透视变换、图像校正及特征提取等经典技术,并落地为正方形与四边形…

2026/9/26 13:05:10 阅读更多 →
ABC447 ACEF题解:双指针、树状数组与线段树边界实战

ABC447 ACEF题解:双指针、树状数组与线段树边界实战

ABC447 这场打完之后,我最大的感受是:AtCoder Beginner Contest 系列做到四百多场以后,出题人越来越懂怎么用“边界处理”来淘汰人了。A、B 两题基本送分,C、D 决定你能不能排进前半区,真正让排名拉开差距的其实是 E 和…

2026/9/26 13:05:10 阅读更多 →
Go实现LeetCode 560:前缀和+哈希表解决和为K的子数组

Go实现LeetCode 560:前缀和+哈希表解决和为K的子数组

刷 LeetCode 的人应该都有个共同感受:Hot 100 里的题,表面上是一道一道的算法题,实际上是帮你把数据结构与算法里的“套路”一个一个吃透。今天要聊的 560 题「和为 K 的子数组」,是我个人非常推荐的一道题,因为它把 …

2026/9/26 13:05:10 阅读更多 →
网关常见错误解析:502 Bad Gateway与路由配置问题

网关常见错误解析:502 Bad Gateway与路由配置问题

我无法根据当前输入生成符合要求的博文。原因如下:项目标题仅为单个字母“ax”,无明确语义指向,无法界定所属领域(是缩写?产品名?命令?变量?代码片段?)&#…

2026/9/26 13:04:10 阅读更多 →

日新闻

数据库课后习题答案别硬背:当测试用例集刷,效率翻倍

数据库课后习题答案别硬背:当测试用例集刷,效率翻倍

简介:万常选版《数据库原理与设计》课后习题答案资源,覆盖第2至6章及第9章,适合正在学习关系模型、数据库建模、关系数据理论与模式求精的本科生、自学者作为复习与自测材料。压缩包共7个文件,含3个doc参考答案、2个sql示例脚本、…

2026/9/26 0:00:25 阅读更多 →
学校官网模拟全流程实践:从页面布局到后端接口与部署

学校官网模拟全流程实践:从页面布局到后端接口与部署

如果你正在找一门 Web 大作业的题目,或者刚开始接触 Web 前端开发想做点能拿来展示的东西,“学校官网模拟”几乎是最稳的选择。题目看着简单,但要把导航、新闻列表、轮播 Banner、二级页面、后台数据都串起来,其实已经把前端布局、…

2026/9/26 0:00:25 阅读更多 →
超级玛丽游戏源码C++:从零搭建横版跳跃游戏工程

超级玛丽游戏源码C++:从零搭建横版跳跃游戏工程

简介:这是一份面向游戏开发初学者与C进阶学习者的超级玛丽(超级马里奥)游戏源码,基于C面向对象编程实现,适合想通过经典项目理解游戏主循环、角色类设计、地图关卡加载与物理碰撞检测的读者参考。压缩包共49个文件&…

2026/9/26 0:00:25 阅读更多 →

周新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/25 19:27:14 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/25 11:15:26 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/25 20:29:09 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/25 20:29:43 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/25 20:29:31 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/25 19:27:26 阅读更多 →