ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

OpenZiti 0.27 系列版本解读:CLI 重构、认证策略管理、事件流式传输与运维能力升级

OpenZiti 0.27 系列版本解读:CLI 重构、认证策略管理、事件流式传输与运维能力升级 零信任网络后端认证鉴权【免费下载链接】zitiThe parent project for OpenZiti. Here you will find the executables for a fully zero-trust, programmable network OpenZiti项目地址https://gitcode.com/gh_mirrors/zi/ziti点击查看免费下载本文以 OpenZiti 项目 CHANGELOG.0.27.md 为主线梳理 v0.27.0 → v0.27.9 十个补丁版本的核心变更并结合本仓库源码ziti/cmd下的 CLI 实现逐项验证关键命令与底层原理。读完本文你将掌握 0.27 系列引入的ziti edge auth-policy/ext-jwt-signerCLI、ziti fabric stream events统一事件流、ziti ops db compact数据库压缩、路由器禁用/重注册re-enroll、以及 transit-router 通过 CLI 注册等运维能力并能对照源码定位到每个功能的实现位置。版本范围与总体脉络CHANGELOG.0.27.md 记录了 OpenZiti 从 v0.27.0 到 v0.27.9 的完整演进其中 v0.27.0 是里程碑式的大版本CLI 大规模重构v0.27.1 引入了统一事件流v0.27.6 集中交付了一批运维与管理能力v0.27.8 补齐了认证策略与外部 JWT 签名者的 CLI 支持v0.27.9 则是针对 websocket 传输并发问题的修复与删除行为回退。本仓库的go.mod声明模块为github.com/openziti/ziti/v2因此 0.27 系列期间的依赖升级channel、edge、fabric、storage、transport 等都会在后续版本中以更高主版本号延续但 0.27 文档本身是理解这些子系统演进历史的重要索引。v0.27.0CLI 大规模重构与 transit-router 支持v0.27.0 是 0.27 系列中改动面最大的一次发布核心工作集中在zitiCLI 上。命令体系重组移除update、adhoc、ping、playbook等无效或极少使用的命令art命令改为隐藏保留为彩蛋ziti ps及其子命令被迁移到ziti agent下ziti ps本身也整体并入ziti agent新增ziti controller与ziti router命令与独立二进制ziti-controller、ziti-router行为完全一致独立二进制被标记为弃用将在未来版本移除新增隐藏命令ziti tunnel行为与ziti-tunnel一致之所以隐藏是因为ziti-edge-tunnel才是官方推荐的隧道应用db、log-format、unwrap命令被移入新的ops命令组ziti ops db等demo、tutorial命令被移入新的learn子命令可执行文件下载管理init/install/upgrade/use/version被弃用其中init与uninstall直接移除。从本仓库的目录结构可以印证这次重组ziti/cmd/ops 下集中了database含compact.go、log_filter.go、unwrap_identity.go等运维子命令而 ziti/cmd/edge 与 ziti/cmd/fabric 则分别承载边缘管理与网络管理命令。ziti edge新增 transit-router 管理ziti edgeCLI 新增了 transit-router 的 create/delete 命令使得 transit/fabric 路由器可以通过注册enrollment流程进行配置而不再需要外部生成证书。前提是 fabric 路由器配置文件包含csr段。对应实现位于 ziti/cmd/edge/create_transit_router.go命令定义如下Use: transit-router name,其支持的参数包括--jwt-output-file/-o输出用于注册的 JWT 到指定文件--cost指定路由器代价默认 0--no-traversal禁止穿越默认允许即 false--disabled禁用路由器被禁用的路由器无法连接控制器--bootstrap-ctrl-chan-listener引导控制通道监听地址及可选分组路由器连接成功后会自动更新例如tls:1.2.3.4:6262group1,group2--config关联到该 transit-router 的配置 id 或名称列表。此外ziti edge enroll增加了-v详细输出选项便于排查注册过程中的问题。v0.27.1统一事件流Event Streaming over WebSocketv0.27.1 是 0.27 系列中最重要的架构级变更之一它将原先分散的 metrics 流、circuits 流等统一为单一的事件流通道。变更要点新增ziti fabric stream events命令事件通过 websocket 推送事件采用与基于文件流式输出相同的 JSON 格式移除了纯文本格式原先独立的 metrics/circuits 单独流式功能被取消统一由事件流承担。源码验证命令实现位于 ziti/cmd/fabric/stream_events.go通过NewStreamEventsCmd注册Use 为events。核心逻辑buildSubscriptions会根据用户指定的事件类型标志构建订阅列表--all订阅全部事件--alerts、--api-sessions、--circuits、--cluster、--connect、--entity-change、--entity-counts、--links、--metrics、--routers、--sdk、--services、--sessions、--terminators、--usage分别订阅对应事件命名空间如event.AlertEventNS、event.CircuitEventNS等--entity-counts-interval指定实体计数事件间隔默认 5 分钟--metrics-source-filter指定要流式传输 metrics 的来源--metrics-filter指定要流式传输的 metrics 过滤规则--usage-version指定 usage 数据版本合法值为 2 或 3默认 3源码中校验usageVersion 2 || usageVersion 3报错。当用户未指定任何事件标志时代码自动将all置为 true即默认订阅全部事件。流式传输通过api.NewWsMgmtChannel建立 websocket 管理通道发送StreamEventsRequestType请求后HandleReceive将每个事件消息体直接以 JSON 打印到标准输出。示例用法源码中自带ziti fabric stream events --circuits --metrics --metrics-filter .*相关事件类型源码位置事件命名空间常量定义于 controller/event如alert.go、circuits.go、metrics.go、routers.go、services.go、sessions.go、terminators.go、usage.go等控制器侧的事件分发逻辑位于 controller/events如dispatcher_circuit.go、dispatcher_link.go、dispatcher_metrics.go等。v0.27.2稳定性与正确性修复v0.27.2 以 Bug 修复为主涉及确保实体计数事件可配置为仅在 raft leader 上发出edge Issue #1282约束 config-type schema 只接受 object 类型edge Issue #1279确保 raft 集群中特定事件不重复fabric Issue #573JSON 事件格式化器将事件独立成行输出fabric Issue #577将raft.advertiseAddress移至ctrl配置块以保持一致fabric Issue #571支持自动迁移与基于 agent 的迁移fabric Issue #569移除已关闭 link 的 dropped_msg 指标fabric Issue #567修复 link listener 未正确配置 channel 输出队列大小的问题fabric Issue #566。同时 CLI 侧允许通过 JSON 定义资源标签ziti Issue #916对应实现可参考 ziti/cmd/api 中 EntityOptions 的 tag 解析逻辑。v0.27.3Raft 运维命令与 Docker CLI 镜像Docker 镜像v0.27.3 起发布zitiCLI 的 Docker 镜像适合在容器化环境中执行管理操作。新增 Raft 交互命令raft-leave将控制器从 raft 集群中移除raft-list列出所有已连接的控制器及其版本/连接状态fabric raft list-members与 agent 命令相同的信息但通过 REST 暴露。结合本仓库源码raft 相关的集群操作命令实现于 ziti/cmd/fabric/cluster.golist、add、remove、transfer-leadership以及 agent 侧的 ziti/cmd/agentcli/agent_cluster_transfer_leadership.go底层 raft 状态机与配置位于 controller/raft。v0.27.4控制器死锁修复v0.27.4 主要修复控制器在刷新 api session 心跳时的死锁edge Issue #1303其余为依赖版本滚动升级。v0.27.5CA 信任与版本检查开关修复zitiCLI 在使用全局受信任 CA 时的问题修复ziti agent stack误调用ziti agent stats的 bug重要行为变更ziti controller/ziti router默认不再将当前运行版本与 GitHub 最新版本进行比较如需开启旧行为设置环境变量ZITI_CHECK_VERSIONtrue。v0.27.6运维与托管性能集中交付v0.27.6 是 0.27 系列中功能密度最高的补丁版本围绕可运维性、托管性能与稳定性展开。inspect CLI 可发现性提升ziti fabric inspect增加子命令化的可检查项新增ziti fabric inspect config用于获取配置。本仓库 ziti/cmd/fabric/inspect.go 中可以看到完整的子命令清单stackdump获取指定节点的堆栈转储metrics获取当前指标config获取指定节点的配置0.27.6 新增cluster-config获取集群配置子集connected-routers各控制器连接了哪些路由器connected-peers集群中控制器之间的连接关系links路由器视角的链路信息sdk-terminators/ert-terminators路由器视角的 SDK/ER 终结器router-circuits/router-edge-circuits/router-sdk-circuits路由器上的各类电路router-messaging待处理的 peer 更新与终结器校验router-data-model/router-data-model-index路由器数据模型及索引data-model-index控制器的已应用 raft 索引非集群时为数据模型索引router-controllers路由器到控制器的连接状态terminator-costs终结器动态代价router-config-registry托管配置注册表状态router-identity-connection-statuses、ctrl-dialer、peer-dialer等调试项。inspect 命令支持--file/-f每个结果输出到instanceId.ValueName文件与--format yaml|json参数默认输出 YAML底层通过 fabric management REST API 的Inspect端点下发AppRegex与RequestedValues见 controller/rest_client/inspect。路由器禁用/启用机制v0.27.6 引入路由器禁用能力被禁用的路由器连接到控制器时会被拒绝。命令ziti fabric update router router-id --disabled ziti fabric update router router-id --disabledfalse对应实现位于 ziti/cmd/fabric/update_router.go底层由 fabric 的 router enable/disable 机制fabric Issue #651驱动。ziti edge create系列也同步支持--disabled标志见 ziti/cmd/edge/create_edge_router.go。数据库压缩新增离线压缩 bbolt 数据库命令ziti ops db compact src dst实现位于 ziti/cmd/ops/database/compact.go源库以只读方式打开ReadOnly: true、权限 0400目标库使用bbolt.Compact进行重写默认开启 array freelist可通过--array-freelistfalse切换为 map freelist最终生成精简后的数据库文件。注意该命令要求先停止控制器属于离线运维操作。edge-router 重新注册新增命令ziti edge re-enroll edge-router实现位于 ziti/cmd/edge/reenroll_edge_router.go通过向edge-routers/id/re-enroll端点发起 POST 完成重新注册并支持--jwt-output-file/-o将注册 JWT 写入文件。托管性能优化路由器在建立或重建托管hosting时不再淹没控制器引入针对 router/tunneler 的终结器创建限速edge Issue #1362与操作限速池fabric Issue #648终结器创建请求幂等化重复请求不会产生多个终结器edge Issue #1355、ziti 侧同步优化并在失败时处理重复创建session 创建幂等edge Issue #1359tunneler 路由器缓存 api-session避免不必要地新建会话edge Issue #1364xgress_edge_tunnel 在控制通道重连时不再启停 hostedge Issue #1336修复 UDP 数据报文大于 10k 时丢数据的问题edge Issue #1329修复路由器事件处理死锁edge Issue #1350。控制通道心跳与集群事件fabric Issue #507 为控制通道心跳增加配置项fabric Issue #584 增加集群事件cluster events对应 controller/event/cluster.go 与 controller/events/dispatcher_cluster.go。同时新增 raft 释放与移交领导权命令release/transfer-leadershipraft 设置改为可配置fabric Issue #597。其他修复xgress_edge_tunnel的 host 启停、MFA 多重注册清理edge Issue #1374、TransitRouter 缺失实体类型 idedge Issue #1369、错误消息文案修正edge Issue #1366、cert 背书 ext-jwt-signer 空指针edge Issue #1310channel 层协议不匹配错误信息改进与 arm 设备 64 位原子对齐修复channel Issue #83/#93sdk-golang 连接遵循 net.Conn 超时规范sdk-golang Issue #356raft 快照压缩fabric Issue #583。v0.27.7Go 1.20 构建v0.27.7 将构建工具链升级至 Go 1.20。注意本仓库当前go.mod已声明go 1.27.1说明项目在后续演进中已大幅提升工具链版本0.27 系列的 Go 1.20 属于当时的历史事实。v0.27.8AuthPolicy 与 Ext JWT Signer 的 CLI 支持v0.27.8 为认证策略auth policies和外部 JWT 签名者external JWT signers补齐了 CLI 能力并优化了服务列表性能。新增 CLI 命令ziti edge create auth-policy/ziti edge update auth-policy/ziti edge delete auth-policyziti Issue #1058认证策略的创建、更新与删除ziti edge create auth-policy支持在 identity 上直接分配认证策略ziti Issue #1064ziti edge delete ext-jwt-signerziti Issue #1059暴露外部 JWT 签名者的删除能力。AuthPolicy 创建参数详解实现位于 ziti/cmd/edge/create_authpolicy.gocreate auth-policy name支持以下参数主要认证primary参数说明默认值--primary-cert-allowed启用证书认证false--primary-cert-expired-allowed允许过期证书false--primary-ext-jwt-allowed启用外部 JWT 认证false--primary-ext-jwt-allowed-signers允许特定 JWT 签名者可多次指定空--primary-updb-allowed启用用户名/密码updb认证false--primary-updb-req-special密码必须包含特殊字符false--primary-updb-req-numbers密码必须包含数字false--primary-updb-req-mixed-case密码必须混合大小写false--primary-updb-lockout-min超过最大尝试次数后的锁定分钟数0永久锁定0--primary-updb-max-attempts无效认证尝试次数0不限0--primary-updb-min-length最小密码长度5二次认证secondary参数说明默认值--secondary-req-ext-jwt-signer每个请求都要求携带的 JWT 签名者空--secondary-req-totp要求 MFA TOTP 注册false创建成功后命令会输出新策略的 id。更新命令 ziti/cmd/edge/update_authpolicy.go 支持同样的参数体系外加--name/-n重命名且只在显式传入flag Changed的参数上构造 PATCH避免误清空未涉及的字段若没有任何参数变更则报错no values changed。服务列表性能edge Issue #1388 优化了 identity service 索引在服务列表查询中的使用同时修复了 PUT identities 引发的错误与内部 PANICedge Issue #1386。v0.27.9websocket 并发修复与删除行为回退v0.27.9 是 0.27 系列的收尾版本重构 websocket 传输以修复并发问题对应ziti/cmd底层api.NewWsMgmtChannel所依赖的 channel/transport 组件升级回退 v0.27.6 引入的删除行为变更v0.27.6 起删除不存在的实体时返回错误v0.27.9 恢复为静默成功以避免破坏既有脚本与自动化流程。版本升级路径建议如果你正运行 0.26 或更早版本建议按以下顺序升级先升级到 v0.27.0CLI 命令结构发生大规模调整update、adhoc、ps等命令消失或被迁移升级后先运行ziti --help与ziti ops --help熟悉新命令树跟随到 v0.27.1事件流式输出 API 已统一基于旧stream circuits/stream metrics的脚本需迁移到ziti fabric stream eventsv0.27.3 之后raft-leave、raft-list、fabric raft list-members可编排进 HA 运维脚本v0.27.6确认删除语义变更的影响面v0.27.9 已回退同时获得路由器禁用、db compact、re-enroll、inspect config 等新运维工具v0.27.8将认证策略与 ext JWT 签名者管理全部迁移到 CLI 流程。由于本仓库后续版本的go.mod已将模块声明为github.com/openziti/ziti/v2且工具链升级至 Go 1.27实际部署时可参考仓库 quickstart 与 doc如 001-overview.md、002-local-dev.md获取最新架构与本地部署指引0.27 系列的完整变更可继续查阅 changelogs 目录下其余版本如 CHANGELOG.0.26.md与 CHANGELOG.1.0.md 了解后续演进方向。小结v0.27 系列是 OpenZiti 在 CLI 形态、事件流架构与运维能力三个维度上的重要转折点CLI 完成瘦身与命令树重组事件系统走向统一的 websocket JSON 流运维侧新增路由器禁用/启用、离线 bbolt 压缩、edge-router 重注册、raft 集群管理与 inspect 子命令化认证策略与外部 JWT 签名者也在本系列末尾获得完整的 CLI 支持。这些能力在后续版本中持续演进理解 0.27 的变更脉络有助于你在升级、迁移与脚本改造时做出准确判断。赞分享零信任网络后端认证鉴权【免费下载链接】zitiThe parent project for OpenZiti. Here you will find the executables for a fully zero-trust, programmable network OpenZiti项目地址https://gitcode.com/gh_mirrors/zi/ziti点击查看免费下载相关推荐菜单栏图标挤成一团用Ice管理Mac菜单栏菜单栏图标挤成一团用Ice管理Mac菜单栏 每天打开电脑二十多个图标挤成一团电池和Wi Fi被顶到刘海后面。Ice 是 macOS 14 及以上系统的 M零信任网络后端认证鉴权ai-memory 变更日志深度解读Agent 长期记忆系统的版本演进与工程实践ai memory 变更日志深度解读Agent 长期记忆系统的版本演进与工程实践 导读 本篇文章以 ai memory 项目官方 CHANGELOG.md h零信任网络后端认证鉴权KeepHQ v0.37.6版本发布工作流与事件管理能力再升级KeepHQ v0.37.6版本发布工作流与事件管理能力再升级 概述 KeepHQ作为开源AIOps人工智能运维和告警管理平台在v0.37.6版本中带来后端告警AI 应用工作流自动化上一篇把 ESP32 改成 AI 语音助手xiaozhi-esp32 从接线到唤醒一次跑通下一篇如何快速上手PoeCharm面向流放之路玩家的完整中文角色构建实战指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表