免费获取学习方案
ARTICLE DETAIL

资讯详情

深耕编程基础知识与建站技术分享的一线实战洞察。

OpenZiti 多 SDK 宿主实战:双 SDK 应用托管 echo 服务与 zcat 客户端接入指南

OpenZiti 多 SDK 宿主实战:双 SDK 应用托管 echo 服务与 zcat 客户端接入指南 零信任网络后端认证鉴权【免费下载链接】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 仓库内 multi-sdk-hosted.md 脚本说明完整演示如何在已有控制器Controller与边缘路由器Edge Router的网络上搭建一个由两个独立 SDK 应用实例共同托管的 echo 服务并由第三个 SDK 应用作为客户端访问。读完本文你将掌握ziti edge系列命令创建服务、身份与三类策略的完整流程理解与#角色语法的区别并能在本机同时运行两个宿主实例验证负载分担场景。一、场景概述多宿主 SDK 托管是什么该脚本的目标很明确搭建一个echo 服务它被两个 SDK 应用echo-host-1、echo-host-2同时托管再由另一个 SDK 应用zcat 客户端访问。这是与单 SDK 宿主见 single-sdk-hosted.md相对的进阶场景其核心价值在于验证同一个服务可以被多个身份共同绑定Bind形成多宿主拓扑控制器会根据宿主 cost、precedence 等策略在多个 terminator 之间选择连接目标SDK 客户端无需感知后端宿主数量仅凭服务名ziti:echo即可访问。注意与使用路由器的托管方式不同这里的宿主程序使用 OpenZiti SDK 直接嵌入网络身份文件.json由注册流程生成托管能力完全依赖控制器下发的策略授权。二、前置条件运行本脚本前环境中必须已经具备至少一个控制器Controller负责身份、服务与策略管理至少一个边缘路由器Edge Router负责承载 SDK 与控制器之间的流量通路。仓库提供了完整的快速启动资源例如 quickstart/README.md、quickstart/docker 与 quickstart/local 下的脚本可一键拉起最小可用的控制器 边缘路由器组合。若采用本机部署也可参照 doc/003-local-deploy.md 与 doc/002-local-dev.md 完成搭建。此外本脚本依赖zitiCLI 以及ziti demo子命令需要先构建/安装当前仓库的 CLI 工具构建方式见 BUILD.md。三、登录控制面并保持会话3.1 登录控制器所有ziti edge操作都要求先建立会话ziti edge login脚本中以action:ziti-login块执行该命令并允许重试allowRetrytrue。运行时它会使用默认控制器地址与凭据也可以在调用 setup 命令时通过参数显式指定连接信息详见下文源码实现解读。3.2 会话保活如果会话超时再次执行 ziti edge login 即可。ziti edge login的会话有时效性。脚本通过keep-session-alive动作块以 1 分钟为间隔维持会话若中途超时重跑登录命令即可恢复。四、清理历史残留实体为保证可重复执行脚本会先删除上一次运行可能残留的同名实体。注意删除顺序遵循依赖关系——先删服务再删配置、身份最后删策略ziti edge delete service echo ziti edge delete config echo-host ziti edge delete identities echo-host-1 echo-host-2 ziti edge delete service-policies echo-bind ziti edge delete edge-router-policies echo ziti edge delete service-edge-router-policies echo提示这些删除命令在实体不存在时通常也会正常结束或给出可忽略的报错脚本的目的是确保从干净状态开始。五、创建 echo 服务ziti edge create service echo -a echoecho服务名后续宿主与客户端都以该名称绑定/拨号-a echo为该服务打上属性标签echo。这些属性将被后续策略的角色roles表达式引用是实现按标签授权的基础。六、创建并注册两个宿主身份ziti edge create identity echo-host-1 -a echo,echo-host -o echo-host-1.jwt ziti edge enroll --rm echo-host-1.jwt ziti edge create identity echo-host-2 -a echo,echo-host -o echo-host-2.jwt ziti edge enroll --rm echo-host-2.jwt逐项说明参数含义create identity echo-host-1创建名为echo-host-1的身份默认类型为用户-a echo,echo-host给身份打两个属性标签echo与echo-host-o echo-host-1.jwt输出注册令牌enrollment JWT到本地文件ziti edge enroll --rm使用该 JWT 完成注册--rm表示注册完成后删除 JWT 文件注册完成后ziti edge enroll会生成对应的JSON 身份文件echo-host-1.json、echo-host-2.json其中包含证书与控制器地址SDK 应用加载该文件即可接入网络。两个宿主身份共用echo-host标签这使后续 bind 策略可以用一条规则同时授权两个身份。七、配置三类策略这是整个托管链路成立的关键。脚本依次创建三条策略ziti edge create service-policy echo-bind Bind --service-roles echo --identity-roles #echo-host ziti edge create edge-router-policy echo --identity-roles #echo --edge-router-roles #all ziti edge create service-edge-router-policy echo --service-roles echo --edge-router-roles #all策略类型名称作用service-policyBindecho-bind授权持有#echo-host标签的身份可以绑定host服务echoedge-router-policyecho授权持有#echo标签的身份可以使用路由器这里是#all所有路由器service-edge-router-policyecho授权服务echo可以被#all路由器服务角色语法的关键约定前缀直接引用具体实体此处echo指服务实体本身#前缀引用属性标签#echo-host指所有带echo-host标签的身份#echo指所有带echo标签的身份#all是内置的全部标签。正是这套标签 策略的组合使得创建身份与创建服务时打的标签在此处转化为实际的授权关系——两个宿主身份都能 Bind 该服务客户端身份同样带echo标签能通过边缘路由器访问它而服务本身被授权可经由所有路由器承载。八、运行双宿主与客户端验证策略配置完成后即可启动两个宿主实例ziti demo echo-server -i echo-host-1.json ziti demo echo-server -i echo-host-2.json同时在另一个终端以客户端身份运行 zcatziti demo zcat -i zcat.json ziti:echo其中echo-server是ziti demo下的演示命令以指定身份文件加载 SDK 上下文绑定并托管echo服务默认服务名即echo可通过-s修改随后循环读取客户端数据并原样回写实现 echo 语义zcat是通用网络 cat 工具ziti:echo表示通过 Ziti 网络拨号名为echo的服务传入-i zcat.json指定客户端身份文件。运行后从标准输入键入内容宿主端会原样回显。两个宿主同时运行时控制器会根据各宿主 terminator 的 cost 与 precedence 选择目标连接从而验证多宿主场景下的连接分配行为。九、源码级原理解读9.1 setup 脚本如何被驱动执行该 Markdown 并非普通文档而是被ziti demo setup echo multi-sdk-hosted命令逐块解释执行的可运行脚本。见 setup-multi-sdk-service.go脚本源码通过//go:embed setup-scripts/multi-sdk-hosted.md直接嵌入二进制运行时使用runzmd.NewRunner()解析文档识别action:ziti-login、action:keep-session-alive、action:ziti等动作块并顺序执行命令行提供了连接参数--controller-url、-u/--username、-p/--password以及--newline-pause滚动行间停顿默认 10ms和--interactive交互模式等待用户确认默认自动确认。命令注册结构见 root.godemo→setup→echo下挂载了client、single-sdk-hosted、multi-sdk-hosted、multi-tunneler-hosted、update-config-addressable等多个场景本主题对应newMultiSdkHostedCmd。9.2 echo-server 命令的实现echo_server.go 展示了 SDK 托管的标准流程与本脚本直接对应ziti.NewConfigFromFile(identityJson)加载身份文件ziti.NewContext(config)建立 SDK 上下文并连接控制器查询当前身份与服务组装ziti.DefaultListenOptions()包含Cost、Precedence、MaxTerminators、BindUsingEdgeIdentity等字段默认最大 terminator 数为 3zitiContext.ListenWithOptions(service, listenOptions)在 Ziti 网络上托管服务循环Accept()并回写数据实现 echoclose-after-write可选在写回后关闭连接。此外它还支持--port额外开启 TCP 监听、--health-check-addr健康检查端点、--cli-agent默认开启的 CLI Agent 管理通道可动态调整 terminator 的 cost/precedence等参数便于在生产式调试中灵活使用。9.3 zcat 客户端的实现zcat.go 演示了 SDK 拨号dial侧的标准流程目标格式为network:address合法 network 为ziti、tcp、udp当 network 为ziti时ziti.NewConfigFromFile加载客户端身份 →ziti.NewContext建立上下文 →zitiContext.DialWithOptions(addr, dialOptions)拨号默认 5 秒连接超时可通过addressservice语法指定拨号身份支持--verbose调试日志、--log-formatterjson/pretty/text、--sdk-flow-control启用 SDK 流控、--redial-on-close断线自动重拨等选项连接建立后可取得底层edge.Conn的GetCircuitId()用于观测本次连接在 Ziti 网络中创建的电路。9.4 与单 SDK 宿主脚本的差异对比 single-sdk-hosted.md 可以发现单宿主版只创建一个echo-host-1身份、只运行一个echo-server实例其余服务创建、策略配置与 zcat 客户端用法完全一致。因此本脚本可以看作单宿主方案的直接横向扩展——新增宿主只需再建一个身份 再启一个实例策略无需改动得益于#echo-host标签的批量匹配这体现了 Ziti 按标签授权的扩展性。十、验证要点与排错建议登录失败/会话过期重跑ziti edge login或使用 setup 命令的--controller-url/-u/-p显式指定宿主启动报unable to lookup service检查 bind 策略echo-bind是否存在、--service-roles echo与身份标签#echo-host是否匹配zcat 拨号失败确认edge-router-policy与service-edge-router-policy已生效且目标路由器在线使用ziti edge list terminators观察echo服务下是否已出现两个宿主注册的 terminator多宿主负载分配可在echo-server实例日志中观察 circuitId 的分配情况结合控制器指标见 doc/2.0-metrics-and-config-changes.md分析连接走向。结语通过本脚本你已完整掌握 OpenZiti 上双 SDK 宿主 SDK 客户端的端到端托管搭建从登录、清理、创建服务与身份、配置 bind/edge-router/service-edge-router 三类策略到同时运行两个 echo-server 并以 zcat 访问。其背后的ziti demo命令体系root.go与 SDK 托管/拨号实现echo_server.go、zcat.go为理解生产级 SDK 嵌入提供了可直接阅读的范本multi-router-tunneler-hosted.md 等其余 setup 脚本则展示了由路由器托管、隧道路由器tunneler接入等更多部署形态可作为后续进阶参考。赞分享零信任网络后端认证鉴权【免费下载链接】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 SDK 客户端接入实战为 echo 服务配置 zcat 身份与 Dial 访问策略OpenZiti SDK 客户端接入实战为 echo 服务配置 zcat 身份与 Dial 访问策略 导读 本文围绕 OpenZiti 仓库中的官方演示脚本零信任网络后端认证鉴权OpenZiti 单 SDK 托管Single SDK Hosted教程从零搭建由 SDK 应用托管的 Echo 服务OpenZiti 单 SDK 托管Single SDK Hosted教程从零搭建由 SDK 应用托管的 Echo 服务 导读 single sdk hos零信任网络后端认证鉴权.NET 测试断言质量分析指南基于 assertion-quality 技能度量断言多样性、深度与假性自信.NET 测试断言质量分析指南基于 assertion quality 技能度量断言多样性、深度与假性自信 本文基于 skills 仓库中 plugins/d零信任网络后端认证鉴权上一篇黑群晖引导避坑指南RR引导如何把一台旧电脑变成家庭数据中心下一篇CANN/asc-devkit UB-GM随路转换NZ2ND搬运创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表