当前位置: 首页 > news >正文

上海专业做网站电话推广网站详细教程

上海专业做网站电话,推广网站详细教程,设计新颖的网站建设,基础html网页模板简介#xff1a; 本文将介绍如何使用 ORAS 客户端将具有允许的媒体类型的 Wasm 模块推送到 ACR 注册库#xff08;一个 OCI 兼容的注册库#xff09;中#xff0c;然后通过 ASM 控制器将 Wasm Filter 部署到指定工作负载对应的 Pod 中。Wasm Filter 部署中的所有步骤都使用…简介 本文将介绍如何使用 ORAS 客户端将具有允许的媒体类型的 Wasm 模块推送到 ACR 注册库一个 OCI 兼容的注册库中然后通过 ASM 控制器将 Wasm Filter 部署到指定工作负载对应的 Pod 中。Wasm Filter 部署中的所有步骤都使用声明方式也就是说可以创建一个自定义资源 CRD 来描述 Wasm Filter 的部署。一旦该 CRD 创建之后ASM 控制器可以将 Wasm 模块加载到数据平面层中的相应 Envoy 代理中同时在控制平面层中也会创建相应的 Istio EnvoyFilter 自定义资源。 Envoy Filter 介绍 首先回顾一下 EnvoyProxy 的实现机制。Envoy 的核心是一个 L3/L4 网络代理并支持 L7 代理通过提供可插入 filter chain 机制允许开发人员编写 filter 来执行不同的任务譬如我们常用到的 HTTP connection manager将原始字节转换为 HTTP 级别的消息和事件还处理所有 HTTP 连接和请求共有的功能包括访问日志、tracing 等。 上图可以看到Downstream 作为连接到 Envoy 并发送请求以及接收响应的客户端部分 监听器 Listener 组件用于绑定到 IP 地址/端口并接收来自 Downstream 下游的连接。通过配置 Listener用户可以启用通过代理的流量管理能力然后使用多个 Filter 增强数据流多个 Filter 构成了一个 Filter Chain。可以看到经过这些 Filter chain 处理之后 会把请求映射到相应的 Cluster此处的 Cluster 集群是指 Envoy 连接到的逻辑上相同的一组上游主机与下文中提交的 Kubernetes 集群没有关系而 Cluster 的作用是负责连接到一组上游节点服务, 并使用关联的负载均衡策略转发这些请求。 根据处理任务的不同Envoy Filter 分为三类 Listener Filter用于操作处理 L4 连接中的元数据。Network Filter用于操作处理 L4 连接中的原始数据。HTTP Filter用于操作处理 L7 连接中的 HTTP 请求与响应。 除了这些 built-in Filter 之外还可以开发自定义的 Filter可使用 native c 编译方式或是通过 wasm 技术构建 Filter。 此外Envoy 提供了一组 API也就是我们常说的 xDS API。通过这些 API控制平面可以动态地配置 Envoy 代理。 如上图所示与进站流量类似对于出站流量来说监听器在配置的地址或者端口进行监听网络流量的请求。每个监听器同样会定义一组位于数据路径中的 Filter并形成一组过滤器链 Filter Chain。通过这样的一组过滤器用户可以配置 Envoy 来针对出站流量做特定的任务包括数据协议处理、生成调用的统计信息、执行 RBAC 权限等。 为了更好地理解这些 Envoy Filter 以及 Filter Chain下面来看一个实际的例子。这个就是 Istio 官方示例 bookinfo 中的第一个服务 productpage。首先, productpage pod 中 Envoy Proxy 配置了一个监听 9080 端口的监听器进入这个 pod 的端口 9080 上的流量请求都会被拦截到这个 proxy 中然后请求就会经过这些 Filter Chain 进行处理。具体如下 第一个 filter 是 envoy.filters.network.metadata_exchange它的主要作用顾名思义用来在 filter 之间交换元数据。第二个 filter: envoy.http_connection_manager它下面通常会有以下几个跟 http 特定的 filter包括envoy.filters.http.wasm/envoy.wasm.metadata_exchange用于元数据交互Istio_authn filter用于授权认证envoy.filters.http.cors处理跨域资源共享的 filterenvoy.filters.http.fault故障注入过滤器可以用来测试微服务架构中容错能力用户可以自定义错误代码来实现延时注入或者终止请求在不同的失败场景下提供错误处理的能力例如服务失败、服务过载、服务高延时等情况这个也是较为常用的 filterenvoy.filters.http.wasm/envoy.wasm.stats、envoy.filters.http.wasm/xxx-wasmfilter用户自定义的 wasm 实现的filterenvoy.filters.http.router实现 HTTP 转发几乎所有 HTTP 场景下都会使用到这一过滤器 备注可以通过请求这个 URL 地址获取配置信息kubectl exec -it [productpage-xxx] -c istio-proxy curl localhost:15000/config_dump 添加新的 Filter Envoy 社区已经提供了若干个 Built-in Filters具体参见 https://www.envoyproxy.io/docs/envoy/latest/configuration/http/http_filters/http_filters。 在服务网格中可以通过 API 启用这些 Built-in Filter 能力。 如果这些 Built-in Filter 无法满足需求还可以通过自定义 Filter 实现有以下两种方式 静态预编译将其他过滤器集成到 Envoy 的源代码中并编译新的 Envoy 版本。这种方法的缺点是您需要维护 Envoy 版本并不断使其与官方发行版保持同步。由于 Envoy 是用 C 实现的因此新开发的过滤器也必须用 C 实现。动态运行时加载在运行时将新的过滤器动态加载到 Envoy 代理中。为了简化扩展 Envoy 的过程, 通过引入 WebAssembly 技术 - 它是一种有效的可移植二进制指令格式提供了可嵌入和隔离的执行环境。 使用 Wasm 扩展 Envoy Proxy 的优缺点 在实际应用中会根据以下优缺点来决定是否使用 Wasm 这种方式扩展 Envoy Filter。 Pros 敏捷性过滤器可以动态加载到正在运行的 Envoy 进程中而无需停止或重新编译。可维护性不必更改 Envoy 自身基础代码库即可扩展其功能。多样性可以将流行的编程语言例如 C/C 和 Rust编译为 WASM因此开发人员可以选择实现过滤器的编程语言。可靠性和隔离性过滤器会被部署到 VM 沙箱中因此与 Envoy 进程本身是隔离的即使当 WASM Filter 出现问题导致崩溃时它也不会影响 Envoy 进程。安全性过滤器通过预定义 API 与 Envoy 代理进行通信因此它们可以访问并只能修改有限数量的连接或请求属性。 Cons 性能约为 C 编写的原生静态编译的 Filter 的 70。由于需要启动一个或多个 WASM 虚拟机因此会消耗一定的内存使用量。The WebAssembly ecosystem is still young。 envoy-wasm 运行机制 如下图所示envoy-wasm 运行机制包括以下几个步骤 Wasm 二进制代码需要能够被动态加载进来无论是通过 local file 方式还是 xds 远程获取方式。一个 Wasm filter 是否被允许加载需要一致性校验https://github.com/proxy-wasm/spec。一旦被加载之后Wasm filter 就成为 filter chain 的一部分当新的请求进来之后还是先进入到原生的 filter之后进入到 Proxy-Wasm 扩展控制器。Proxy-Wasm 扩展控制器会根据在 filter chain 中定义的 configuration 信息调用并执行注册的校验过的这些 Wasm filter。内置的 Wasm runtime 支持LLVM-based WAVM ~20MB, and V8 ~10MB。事件驱动模型。兼容 native filter 调用方式。 如下所示是下发到 Envoy Proxy 侧的一个 Wasm Filter 的配置内容。 以上讲述了 Envoy Filter 以及通过 Wasm 扩展的方式引出了 Wasm filter 机制这将是未来的主流方式。 在一个服务网格体系中如何以有效并且简单的方式来管理 Wasm filter 的部署运行将是云产品需要解决的一个问题。 OPAS 及 Wasm filter 注册库 在 Cloud Native 生态系统中如何管理一个 Artifact 文件相信绝大多数人会想到 oci 规范标准是否可以像管理 Docker 镜像那样去管理这些 Wasm filter。 ORAS 项目就是用来解决这个问题的它的全称为 OCI Registry As Storage。ORAS 是 OCI Artifacts 项目的参考实现可以显著地简化 OCI 注册库中任意内容的存储。 使用 ORAS API/SDK Library 可以构建自定义工具完成以下功能 将 WebAssembly 模块推入到 OCI 注册库中。从 OCI 注册库中拉取 WebAssembly 模块。 oras cli 的使用类似于 docker cli如下所示 以阿里云容器镜像服务企业版 ACR EE 为例作为企业级云原生应用制品管理平台已经提供了容器镜像、Helm Chart 以及符合 OCI 规范的制品的生命周期管理。开通之后创建一个镜像仓库会分配一个地址提供了 vpc 和公网两种方式。 使用 oras login 命令行登录, 执行以下命令 oras login --username登录账号 acree-1-registry.cn-hangzhou.cr.aliyuncs.com 通过oras push命令推送, 执行以下命令 oras push acree-1-registry.cn-hangzhou.cr.aliyuncs.com//asm-test:v0.1 --manifest-config runtime-config.json:application/vnd.module.wasm.config.v1json example-filter.wasm:application/vnd.module.wasm.content.layer.v1wasm 注意参数 --manifest-config可以参考 Wasm Artifact 镜像规范。 Wasm filter 被推送到 ACR EE 注册库中之后可以查看相关信息如下 阿里云服务网格 ASM 架构 在阿里云服务网格 ASM 产品中是如何使用 Wasm 技术呢首先我们了解一下 ASM 产品的技术架构如下图所示。作为业内首个全托管 Istio 兼容的服务网格产品ASM 的定位是专注打造全托管、安全、稳定、易用的服务网格以及支持跨地域多集群、多云混合云服务的统一治理。控制平面的组件托管在阿里云侧与数据面侧的用户集群解耦独立降低用户使用的复杂度用户只需要专注于业务应用的开发部署。在托管模式下保持与 Istio 的兼容支持声明式的方式定义灵活的路由规则支持多个 Kubernetes 集群的统一流量管理。 服务网格 ASM 作为连接上层应用和下层计算基础设施的重要环节可以分为 3 个角度来理解 从向下与基础设施融合的角度服务网格自身的能力建设的角度向上支持应用层以及被集成能力的角度 其中, 从服务网格自身的能力建设来看ASM 作为一个托管的服务网格产品提供了柔性架构可以支持不同版本的、定制的 Istio 控制面与数据面 Proxy 代理。 在托管侧将控制面核心组件进行改造托管并负责整个控制面和数据面组件的生命周期管理。在产品能力方面ASM 在 Mesh CA、安全审计方面做了增强提升网格实例的安全度把客户场景的常见问题形成了诊断规则用户可以自行运行诊断分析。在做核心托管侧的建设之外ASM 优化整合了阿里云的多个产品服务如在可观测性方面整合了 xtrace、arms、日志服务等在跨 vpc 网络打通方面整合了 cen实现多集群的互联互通在限流方面集成了 AHAS 的限流服务。ASM 还集成扩展了社区开源的组件能力包括在安全方面的 OPA 安全引擎的支持、spiffe/spire 的支持、envoyfilter 的扩展支持等。所以这一部分需要提供一种简单有效的方式帮助用户轻松扩展这些能力。 在阿里云 ASM 中使用 Wasm 随着新架构的优化WebAssembly 技术被引入服务网格中解决代理扩展的问题。这样一来 ASM 架构就变成了“托管的高可用弹性控制平面 可扩展的插件式的数据平面“的模式。 阿里云服务网格 ASM 产品中提供了对 WebAssemblyWASM技术的支持服务网格使用人员可以把扩展的 WASM Filter 通过 ASM 部署到数据面集群中相应的 Envoy 代理中。通过 ASMFilterDeployment Controller 组件, 可以支持动态加载插件、简单易用、以及支持热更新等能力。 通过这种过滤器扩展机制可以轻松扩展 Envoy 的功能并将其在服务网格中的应用推向了新的高度。 下面我们具体来看在 ASM 实例中是怎样启用这个能力的 部署一个 ASM 实例之后默认该功能是没有开启的用户需要主动去开启。例如通过如下 aliyun cli 方式 aliyun servicemesh UpdateMeshFeature --ServiceMeshIdxxxxxx --WebAssemblyFilterEnabledtrue 开启该功能之后ASM 实例会部署相关组件并执行如下任务 部署一个 DaemonSet(asmwasm-controller) 到 K8s 集群中。asmwasm-controller 监听一个 configmap该 configmap 存放要拉取的 wasm filter 的地址例如acree-1-registry.cn-hangzhou.cr.aliyuncs.com/*/sample:v0.1。如果需要授权认证该 asmwasm-controller 会根据定义的 pullSecret 值获得相应的 secret 值。然后调用 oras API 从注册库中动态拉取 Wasm filter。该 asmwasm-controller 使用 HostPath 方式挂载 volume所以拉取的 Wasm filter 会落盘到对应的节点上。 启用了该功能之后如何开始部署一个 Wasm filter 并挂载到对应 workload 的 Envoy Proxy 中呢 阿里云服务网格 ASM 产品提供了一个新的 CRD ASMFilterDeployment 以及相关的 controller 组件。这个 controller 组件会监听 ASMFilterDeployment 资源对象的情况会做 2 个方面的事情 创建出用于控制面的 Istio EnvoyFilter Custom Resource并推送到对应的 asm 控制面 istiod 中。从 OCI 注册库中拉取对应的 wasm filter 镜像并挂载到对应的 workload pod 中。 以下是一个 ASMFilterDeployment CR 示例 apiVersion: istio.alibabacloud.com/v1beta1 kind: ASMFilterDeployment metadata:name: details-v1-wasmfiltersample spec:workload:kind: Deploymentlabels:app: detailsversion: v1filter:parameters: {name:hello,value:hello details}image: acree-1-registry.cn-hangzhou.cr.aliyuncs.com/asm/asm-test:v0.1imagePullOptions: pullSecret: asmwasm-cacherootID: my_root_idid: details-v1-wasmfiltersample.default 生成的 Istio Envoy Filter 资源如下所示 其中match 片段中定义了 envoy.router 这个 filter、patch 片段中定义了 INSERT_BEFORE 操作插入一个 Wasm filter如下 挂载了 Wasm filter 的工作负载定义更新后如下其中以 hostpath 方式挂载 Wasm filter 文件到 Proxy 容器中 apiVersion: extensions/v1beta1 kind: Deployment metadata: .… spec:….template:metadata:annotations:sidecar.istio.io/userVolume: [{name:wasmfilters-dir,hostPath:{path:/var/local/lib/wasm-filters}}]’sidecar.istio.io/userVolumeMount: [{mountPath:/var/local/lib/wasm-filters,name:wasmfilters-dir}] 确认 Wasm filter 是否生效。登录到 productpage Pod 的 istio-proxy 容器中执行以下命令将一些流量发送到 details 服务上。在响应中可以看到过滤器的头添加到响应头中。 kubectl exec -ti deploy/productpage-v1 -c istio-proxy -- curl -v http://details:9080/details/123 * Trying 172.21.9.191... * TCP_NODELAY set * Connected to details (172.21.9.191) port 9080 (#0)GET /details/123 HTTP/1.1Host: details:9080User-Agent: curl/7.58.0Accept: */*HTTP/1.1 200 OK xxxxxxxresp-header-demo: added by our filter xxxxx * Connection #0 to host details left intact xxxxx 总结 在开发阶段 按照如下流程使用适当的 wasm sdk/编程语言创建编译出一个 wasm 二进制文件通过使用 oras cli 上传到 oci 镜像仓库中。 在部署运行阶段 首先确认已经在 ASM 中开启 Wasm 支持能力然后创建一个 ASMFilterDeployment 自定义资源注意这个 CR 是在服务网格 ASM 实例对应的 apiserver 中创建。一旦创建相应的 crd controller 会监听同步相应的资源一方面生成一个 Istio EnvoyFilter CR 并发送到 ASM 实例的控制面 apiserver 中用户可以查看生成的这个 Istio Envoyfilter CR 是否满足期望。 另一方面确认 Workload 部署变更生效包括 可以登录到 proxy container 进行查看 Wasm filter 是否挂载成功。通过调整 wasm log level 来打印相关信息。 作为业内首个全托管 Istio 兼容的服务网格产品阿里云服务网格简称 ASM是一个统一管理微服务应用流量、兼容 Istio 的托管式平台专注打造全托管、安全、稳定、易用的服务网格支持跨地域多集群、多云混合云服务的统一治理。通过流量控制、网格观测以及服务间通信安全等功能服务网格 ASM 可以全方位地简化您的服务治理并为运行在异构计算基础设施上的服务提供统一的管理能力适用于 Kubernetes 集群、Serverless Kubernetes 集群、ECS 虚拟机以及自建集群。 作者王夕宁 阿里云高级技术专家阿里云服务网格 ASM 技术负责人专注于 Kubernetes、服务网格以及其他云原生领域。 原文链接 本文为阿里云原创内容未经允许不得转载
http://www.pierceye.com/news/821972/

相关文章:

  • 广州网站制作商怎样查看网站的权重
  • 网站群建设标准最好的响应式网站
  • 石家庄市建设厅网站网页网页设计班
  • 网站首页怎么设计公司网页制作培训试题
  • 虚拟主机怎么做网站新seo排名点击软件
  • 买服务器做网站 镜像选什么网页设计用的软件
  • 内江 网站建设网站后台登录地址
  • 网站建设合同副本临沂建设局官方网站
  • 林州网站建设哪家好网站做电子链接标识申请好吗
  • 石家庄开发网站建设263企业邮箱登录邮箱
  • 青岛公司建设网站电子商务网站开发技术论文
  • 龙华网站的建设建设网站教程视频视频
  • 威海高区建设局网站品牌网站建设多少钱
  • 网站php网站空间新乡河南网站建设
  • 你第一个物流网站建设方案信诚网络公司网站
  • 企业建站什么网站好wordpress管理员后台
  • 南京网站开发价格两个wordpress共用一个数据库
  • 番禺制作网站平台柳城网站制作
  • 网站建设相关视频教程网页设计布局有哪几种方法
  • 能接做网站的活的网站上海建网站方案
  • 免费网站软件app大全飘雪影院手机免费观看免费
  • 怎么做类似淘宝的网站石家庄网络开发公司
  • 专业SEO教程网站广东省住房与城乡建设部网站
  • 360免费建站为什么注册不了雨灿网站建设
  • 益阳市建设局网站在家来料加工
  • 邵阳网站设计宠物网站 html模板
  • 网站域名以co与com有什么不同18款禁用黄a免费
  • 农村电商网站建设方案wordpress官网密码错误
  • 婚庆公司网站建设doc高端网站建设推广
  • 做房地产一级市场的看什么网站网站建建设公司和网络自建