华为云用户手册

  • 重置密码 登录微服务引擎控制台。 在左侧导航栏选择“ServiceComb引擎专享版”。 单击待操作的开启了安全认证的ServiceComb引擎。 单击“系统管理”。 在弹出的“安全认证”对话框输入该ServiceComb引擎下关联了admin角色权限的账号名及其密码,单击“确定”。 首次连接ServiceComb引擎,请输入root账号名及创建ServiceComb引擎时输入的密码。 创建账号请参考新增账号。 在“账号管理”页签,选择待重置密码的账号名,单击“操作”列的“重置密码”。 输入“新密码”和“确认密码”。 查看提示信息确认需要重置密码后,勾选“我已确认知晓”。 单击“保存”,完成密码重置。
  • 删除账号 登录微服务引擎控制台。 在左侧导航栏选择“ServiceComb引擎专享版”。 单击待操作的开启了安全认证的ServiceComb引擎。 单击“系统管理”。 在弹出的“安全认证”对话框输入该ServiceComb引擎下关联了admin角色权限的账号名及其密码,单击“确定”。 首次连接ServiceComb引擎,请输入root账号名及创建ServiceComb引擎时输入的密码。 创建账号请参考新增账号。 在“账号管理”页签,单击待删除账号“操作”列的“删除”。 在弹出的对话框中输入“DELETE”,单击“确定”。
  • 编辑账号 登录微服务引擎控制台。 在左侧导航栏选择“ServiceComb引擎专享版”。 单击待操作的开启了安全认证的ServiceComb引擎。 单击“系统管理”。 在弹出的“安全认证”对话框输入该ServiceComb引擎下关联了admin角色权限的账号名及其密码,单击“确定”。 首次连接ServiceComb引擎,请输入root账号名及创建ServiceComb引擎时输入的密码。 创建账号请参考新增账号。 在“账号管理”页签,单击待编辑账号“操作”列的“编辑账号”。 根据实际业务需求,选择“账号角色”。 一个账号下最多可关联5个角色。 单击“保存”,完成账号编辑。
  • 修改密码 登录微服务引擎控制台。 在左侧导航栏选择“ServiceComb引擎专享版”。 单击待操作的开启了安全认证的ServiceComb引擎。 单击“系统管理”。 在弹出的“安全认证”对话框输入账号名及其密码,单击“确定”。 首次连接ServiceComb引擎,请输入root账号名及创建ServiceComb引擎时输入的密码。 连接ServiceComb引擎的账号未关联admin角色权限,仅可修改当前登录账号的密码。 连接ServiceComb引擎的账号关联了admin角色权限,可修改该ServiceComb引擎下所有账号的密码。 创建账号请参考新增账号。 在“账号管理”页签,选择登录该ServiceComb引擎的账号名,单击“操作”列的“修改密码”。 输入“原密码”、“新密码”和“确认密码”。 查看提示信息确认需要修改密码后,勾选“我已确认知晓”。 也可单击“系统管理”页面右上角的“修改密码”,修改当前登录账号的密码。 单击“保存”,完成密码修改。
  • 新增账号 创建新账号前,可先根据实际业务需要创建角色。 登录微服务引擎控制台。 在左侧导航栏选择“ServiceComb引擎专享版”。 单击待操作的开启了安全认证的ServiceComb引擎。 单击“系统管理”。 在弹出的“安全认证”对话框输入该ServiceComb引擎下关联了admin角色权限的账号名及其密码,单击“确定”。 首次连接ServiceComb引擎,请输入root账号名及创建ServiceComb引擎时输入的密码。 在“账号管理”页签,单击“新增账号”,参考下表设置账号参数。 参数名称 参数说明 账号名称 输入新账号名称。 说明: 账号创建后,账号名称不可修改。 账号角色 根据实际业务需求,选择账号角色。 说明: 一个账号下最多可关联5个角色。 密码 输入账号密码。 确认密码 再次输入账号密码。 单击“确定”,完成新账号创建。
  • 查看账号角色权限 登录微服务引擎控制台。 在左侧导航栏选择“ServiceComb引擎专享版”。 单击待操作的开启了安全认证的ServiceComb引擎。 单击“系统管理”。 在弹出的“安全认证”对话框输入该ServiceComb引擎下关联了admin角色权限的账号名及其密码,单击“确定”。 首次连接ServiceComb引擎,请输入root账号名及创建ServiceComb引擎时输入的密码。 创建账号请参考新增账号。 单击账号列表中待查看账号“角色”列的角色名称,在弹出页面可以查看账号关联的角色名称及权限配置情况。
  • ServiceComb引擎 ServiceComb引擎采用的注册发现中心Apache ServiceComb Service Center,是一个RESTful风格的、高可用无状态的服务注册发现中心,提供微服务发现和微服务管理功能。服务提供者可以将自身的实例信息注册到服务注册发现中心,以供服务消费者发现并使用。ServiceComb引擎可无缝兼容Spring Cloud、ServiceComb等开源生态。关于Apache ServiceComb Service Center的详细内容请参考: https://github.com/apache/servicecomb-service-center/ https://service-center.readthedocs.io/en/latest/user-guides.html ServiceComb引擎当前仅在华东-上海一、华南-广州、华北-北京四、华北-北京一、西南-贵阳一、华北-乌兰察布一、华东-上海二、华东二、中国-香港、亚太-新加坡、拉美-墨西哥城二、土耳其-伊斯坦布尔、中东-利雅得和亚太-雅加达支持。 ServiceComb引擎分为1.x、2.x版本。 ServiceComb引擎2.x版本是可支持大规模微服务应用管理的商用引擎。您可根据业务需要选择不同规格,引擎创建完成后不支持规格变更;引擎资源独享,性能不受其他租户影响。 相较于ServiceComb引擎1.x版本,ServiceComb引擎2.x版本底层架构、功能、安全及性能全面升级,提供了独立的服务注册发现中心和配置中心,支持基于用户业务场景的定义和治理。两个版本的特性比对请参见表2。 表2 ServiceComb引擎2.x和ServiceComb引擎1.x特性比对 功能 特性 2.x 1.x 备注 引擎管理 安全性 支持安全认证 √ √ - 可靠性 3AZ高可靠 √ √ - 微服务管理 基础能力 注册发现 √ √ - 多框架接入 √ √ 支持Spring Cloud、ServiceComb Java Chassis。 无实例版本自动清理 √ x 2.3.7及以后版本,支持保留最近3个微服务版本,并自动清理无实例版本。 性能 实例变化毫秒级推送 √ √ - 配置管理 基础能力 管理配置 √ √ - 配置格式多样化 √ 仅支持文本 2.x新增支持配置格式有:YAML、JSON、TEXT、Properties、INI、XML。 导入导出 √ √ 2.x新增支持设置导入相同配置策略。 高级特性 历史版本 √ x - 版本对比 √ x - 一键回滚 √ x - 配置标签 √ x - 性能 秒级下发 √ x - 微服务治理 业务场景化治理 业务场景定义 √ x - 基于请求Method的匹配规则 √ x - 基于请求Path的匹配规则 √ x - 基于请求Headers的匹配规则 √ x - 治理策略-流量控制 服务端的令牌桶限流 √ √ - 治理策略-重试 客户端通过重试来保证用户业务的可用性、容错性、一致性 √ √ - 治理策略-熔断 服务端通过熔断故障业务,防止故障蔓延到整个服务,发生大规模故障 √ √ - 治理策略-隔离仓 服务端基于信号量控制请求并发能力 √ x - 开发工具 本地轻量化引擎 本地一键启动,方便开发者离线开发微服务 √ √ -
  • 应用网关 CS E应用网关是各类应用的流量入口,是基于Envoy项目增强的云上托管类网关产品,实现Ingress与微服务网关合一的全新形态。 其兼容微服务应用、注册中心对接、容器Service、容器Ingress、固定地址的虚机应用等多种后端形态,支持HTTP、gRPC、Dubbo RPC、WebSocket等多种协议类型,以及全链路灰度发布、安全认证等多种服务治理特性。 应用网关当前仅在华东-上海一、西南-贵阳一支持。
  • Nacos引擎 CSE Nacos是基于开源Nacos 2.x版本开发的一款微服务注册发现、配置管理平台。支持多种开发语言、框架的接入使用,具有基于DNS的服务发现能力。 Nacos引擎当前仅在华东-上海一、华南-广州、华北-北京四、西南-贵阳一、华东二、中国-香港、亚太-新加坡、中东-利雅得和拉美-墨西哥城二支持。 Nacos的关键特性包括: 表1 Nacos支持特性 功能 特性 实例管理 创建实例。 查看实例规格。 查看实例列表。 查看实例详情。 实例删除。 按需转包周期。 企业项目。 规格变更 扩容变更。 连接管理 内网访问,通过ip和 域名 访问。 命名空间管理 查看命名空间清单。 查看命名空间详情。 创建命名空间。 编辑命名空间。 删除命名空间。 命名空间数量限制。 说明: 一共可创建50个命名空间。 服务管理 过滤命名空间。 搜索服务。 过滤空服务。 查看服务清单。 创建服务。 查看服务提供者。 查看服务订阅者。 实例按集群区分。 提供者支持按元数据过滤。 支持服务节点上下线。 支持服务节点权重编辑 配置管理 创建配置。 导入配置。 编辑配置。 删除配置。 配置灰度发布。 单命名空间配置数量限制。 搜索配置。 查看配置清单。 查看配置详情。 查看历史版本。 回滚到历史版本。 配置内容对比。 配置监听查询。
  • 服务异常修复 诊断异常的服务,需要先手动修复异常状态的手动处理项,再一键修复可自动处理项。 在诊断状态为异常的服务下单击“处理”,若手动处理项有异常,根据修复指导进行手动修复。 图2 手动处理项 手动修复异常状态的手动处理项后,单击“下一步”进入自动修复项页面,单击“一键修复”,自动处理异常状态的检查项。 图3 自动处理项 如果自动处理无法修复状态异常的检查项,请根据修复指导进行手动修复。 已配置网关或创建灰度发布的服务可能因为Service的端口名称被修改而出现异常,此时不支持进行一键修复。 如果服务未在服务列表中展示,请检查对应的工作负载是否存在。
  • 扁平网络 扁平网络指的是两个或多个Kubernetes集群的Pod之间能够直接访问,而无需通过其他组件转发,能够提供更高的通信效率。 图1 扁平网络 使用扁平网络对Kubernetes集群的网络模型、网络连通性、规划网段有一定的约束: 所有集群必须使用容器对接ENI的网络模型,通过VPC的路由实现Pod之间跨集群通信。支持CCE集群和 CCE Turbo 集群。如果使用CCE集群,在创建时,网络模型需要选择“VPC网络”;如果使用CCE Turbo集群,在创建时,网络模型需要选择“云原生网络2.0”。 集群的网络类型可参考:集群网络构成。 所有集群VPC之间需要互通,可以处于同一VPC内,也可以将多个集群的VPC通过其他方式(对等连接、云连接等)连通。如果集群处于不同VPC内,要注意VPC的网段之间不要冲突。 对等连接可参考:创建同一账户下的对等连接。 云连接可参考:同区域同账号VPC互通。 所有集群要有统一的网络规划,所有集群的容器网段、服务网段之间不能冲突。如果多个集群处于不同VPC,那么所有集群的VPC网段也不能冲突。同时,以上网段不能和网格控制面网段冲突。
  • 扁平网络和非扁平网络集群混合场景 图3 扁平网络和非扁平网络混合部署 为了减少运维负担,不建议扁平网络和非扁平网络的集群混合加入ASM网格中,如果必须混合部署,有以下使用约束: 所有扁平网络的集群必须使用容器对接ENI的网络模型,对非扁平网络的集群没有特殊要求。 所有集群VPC之间的网络需要互通,可以处于同一VPC内,也可以将多个集群的VPC通过其他方式(对等连接、云连接等)连通。如果集群处于不同VPC内,要注意VPC的网段之间不要冲突。 对等连接可参考:创建同一账户下的对等连接。 云连接可参考:同区域同账号VPC互通。 所有集群(包括非扁平网络)的容器网段、服务网段之间不能冲突。例如:混合网络拓扑场景下,CCE集群Cluster1为扁平网络拓扑,CCE集群Cluster2为非扁平网络拓扑,那么Cluster1的容器网段、服务网段不能和Cluster2的容器网段、服务网段冲突,即使Cluster2集群为非扁平网络拓扑。 如果多个集群处于不同VPC,那么所有集群的VPC网段也不能冲突。同时,以上网段不能和网格控制面网段冲突。
  • 非扁平网络 非扁平网络指的是两个或多个Kubernetes集群的Pod之间因为网络模型不支持、容器网段冲突等原因无法直接通信,而是通过一个东西向流量的转发网关,实现非扁平网络集群间的通信。 图2 非扁平网络 相比于扁平网络,非扁平网络的使用约束少: 所有集群VPC之间的网络需要互通,可以处于同一VPC内,也可以将多个集群的VPC通过其他方式(对等连接、云连接等)连通。 对等连接可参考:创建同一账户下的对等连接。 云连接可参考:同区域同账号VPC互通。 非扁平网络对用户集群的网络模型没有特别的要求,用户集群只需要将Gateway地址暴露出来,供其他集群访问即可。但是因为使用集中的流量入口,性能瓶颈主要集中在网关上,而且多一次的转发,会对通信时延产生一定的影响。 在ASM控制台为网格添加集群时,需要为集群配置一个东西向流量的私网ELB,作为其他集群的访问入口。
  • 操作步骤 登录应用服务网格控制台,单击服务网格的名称,进入网格详情页面。 在左侧导航栏选择“网关管理”,在需要添加路由的网关所在行,单击操作列的“添加路由”,配置如下参数。 URL匹配规则 前缀匹配:例如映射URL为/healthz,只要符合此前缀的URL均可访问。例如/healthz/v1、/healthz/v2。 完全匹配:只有完全匹配上才能生效。例如映射URL为/healthz,则必须为此URL才能访问。 支持通过YAML方式配置正则匹配规则,修改VirtualService配置文件即可: ... http: - delegate: name: nginx-80 namespace: default match: - uri: regex: /do[a-z]*/ ... 如上所示,“regex”表示按正则表达式方式匹配URL,注意URL必须以“/”开头。 URL 服务支持的映射URL,例如/example。 同一网关下的URL配置不能相同。 命名空间 服务网关所在的命名空间。 目标服务 添加网关的服务,直接在下拉框中选择。目标服务会根据对应的网关协议进行过滤,过滤规则请参见添加路由时,为什么选不到对应的服务?。 配置诊断失败的服务无法选择,需要先根据手动修复项或自动修复项进行修复。 访问端口 仅显示匹配对外协议的端口。 重写 (对外协议为HTTP/HTTPS时可配置) 重写HTTP/HTTPS的URI和Host/Authority头,于转发前执行。默认关闭。开启后,需要配置如下参数: URI:使用此值重写URI的路径(或前缀),如果原始URI是基于前缀匹配,那么将替换相应匹配的前缀。 Host/Authority头:使用此值重写HTTP/HTTPS的Host/Authority头。 域名单独配置路由 为网关中某个域名单独配置路由规则。 图1 添加路由 配置完成后,单击“确定”。
  • 约束与限制 目前支持v1.15、v1.17、v1.19和v1.21版本的集群加入企业版网格。 不支持安全容器类型的CCE Turbo集群添加至网格。 同一网格最多只能添加五个集群。 同一虚拟私有云的集群只能加入同一个网格。 为了满足高可用的要求,集群需要至少包含两个可用节点,每个节点至少保证有2U4G的可用资源。 集群的服务网段、容器网段不能和网格内已有集群的服务网段、容器网段冲突。如果集群和网格内的已有集群处于不同的VPC,集群的子网网段也不能冲突。 如果实例(Pod)需要跨集群通信,集群需要使用ENI网络模型,且集群之间网络互通,可以处于同一VPC内,也可以将多个集群的VPC通过其他方式(对等连接、云连接等)连通。网络连通请参见如何通过对等连接打通两个集群的VPC网络,实现实例跨集群通信?。 CCE集群和CCE Turbo集群混合多集群场景,CCE集群服务访问Turbo集群服务时,需要为Turbo集群的ENI安全组入方向放通CCE集群的容器网段,否则会访问不通。具体操作请参见CCE集群服务访问CCE Turbo集群服务时,如何配置安全组规则?。
  • 操作步骤 登录应用服务网格控制台,使用以下任意一种方式进入添加集群页面。 (快捷方式)在企业版网格右上方,单击图标。 在企业版网格详情页,单击左侧导航栏的“网格配置”,在“基本信息”页签单击“添加集群”。 设置集群信息。 集群配置 在集群列表中选择集群,或在列表右上角输入集群名称搜索需要的集群。勾选后,系统自动校验集群是否符合添加要求,若校验不通过,会以图标标识,鼠标放上去可以查看校验不通过的原因以及解决方案。具体内容可参考集群校验报错常见场景及解决方案。 如果当前没有可用集群,需要先创建集群后,再进行添加,详情可参考购买CCE集群。 选择好集群后,按照集群的网络模型或实际的通信需求选择集群的网络类型(要求网格版本为1.8.4-r3及以上)。网络类型分为扁平网络和非扁平网络,如果是非扁平网络,还要为集群配置一个东西向流量的私网ELB,作为其他集群的访问入口。 关于扁平网络和非扁平网络的介绍以及如何选型请参见扁平网络和非扁平网络;选择非扁平网络时,如果查询不到ELB,请参考企业版网格添加集群时,选择非扁平网络,为什么查询不到ELB?进行排查。 sidecar配置 选择命名空间:为命名空间设置标签istio-injection=enabled,其中的Pod在重启后会自动注入istio-proxy sidecar。 是否重启已有服务:如果开启(即重启已有服务),会自动注入istio-proxy sidecar,业务将会暂时中断。 可观测性配置 继承自网格配置,不可修改。 设置完成后,单击“确定”。 添加集群大约需要一分钟,请耐心等待。添加完成后,返回网格详情页面可查看到添加的集群信息。
  • 配置sidecar资源限制 支持为sidecar(即istio-proxy容器)配置CPU和内存的资源上下限。同一个节点上部署的工作负载,对于未设置资源上下限的工作负载,如果其异常资源泄露会导致其他工作负载分配不到资源而异常。未设置资源上下限的工作负载,工作负载监控信息也会不准确。 默认的sidecar资源上下限为: CPU(Core):最小 0.1,最大 2 MEM(MiB):最小 128,最大 1024 如需更改,请参考以下操作: 单击工作负载操作列的“sidecar资源限制”,也可以勾选多个工作负载,在列表左上角单击“sidecar资源限制”进行批量配置。 图2 sidecar资源限制 CPU最小值:也称CPU请求,表示容器使用的最小CPU需求,作为容器调度时资源分配的判断依赖。只有当节点上可分配CPU总量 ≥ 容器CPU请求数时,才允许将容器调度到该节点。 CPU最大值:也称CPU限制,表示容器能使用的CPU最大值。 MEM最小值:也称内存请求,表示容器使用的最小内存需求,作为容器调度时资源分配的判断依赖。只有当节点上可分配内存总量 ≥ 容器内存请求数时,才允许将容器调度到该节点。 MEM最大值:也称内存限制,表示容器能使用的内存最大值。当内存使用率超出设置的内存限制值时,该实例可能会被重启进而影响工作负载的正常使用。
  • sidecar注入 可展示当前已注入sidecar的命名空间及所属集群。如果还未做过注入操作,或者需要为更多命名空间注入sidecar,请参考以下操作: 登录应用服务网格控制台,单击服务网格的名称,进入网格详情页面。 在左侧导航栏选择“网格配置”,单击“sidecar管理”页签。 单击“sidecar管理”,选择命名空间,判断是否重启已有服务,单击“确定”。 图1 注入sidecar 选择命名空间:选择一个或多个命名空间,系统将为命名空间设置标签istio-injection=enabled。 是否重启已有服务: :会重启命名空间下已有服务关联的Pod,将会暂时中断业务。只有在重启后,已有服务关联的Pod才会自动注入istio-proxy sidecar。 :已有服务关联的Pod不会自动注入istio-proxy sidecar,需要在CCE控制台,手动重启工作负载才会注入sidecar。是否重启已有服务只会影响已有服务,只要为命名空间设置了istio-injection=enabled标签,后面新建的服务实例都会自动注入sidecar。 流量拦截配置 默认情况下,ASM所注入的sidecar会拦截所有入方向和出方向流量,可通过流量拦截配置修改默认的流量拦截规则。 入方向端口:可用于配置端口级别拦截规则,生效于网格服务的内部端口,以逗号分隔入站端口。 仅拦截指定端口表示访问网格服务指定端口范围内的请求将被重定向到sidecar中。 仅排除指定端口表示访问网格服务的请求,除端口范围外的请求将被重定向到sidecar中。 出方向端口:可用于配置端口级别拦截规则,生效于网格服务对外访问的流量方向上,以逗号分隔出站端口。 仅拦截指定端口表示网格服务访问指定端口范围内的请求将被重定向到sidecar中。 仅排除指定端口表示网格服务对外访问的请求,除指定端口范围外的流量都将被重定向到sidecar中。 出方向网段:可用于配置网段级别拦截规则,生效于网格服务对外访问的流量方向上,以逗号分隔 IP ,以 CIDR 形式表示。 仅拦截指定网段表示指定网段范围内的流量将被重定向到sidecar中。 仅排除指定网段表示除指定网段范围外的流量将被重定向到sidecar中。 若界面提示“以下集群未开放命名空间注入修改操作”,可能因为当前网格是通过1.0控制台创建的,默认不开放命名空间注入,需要通过kubectl命令行开放,具体操作请参见如何为集群开放命名空间注入?。 为集群的命名空间开启sidecar注入后,该命名空间下所有工作负载关联的Pod将自动注入sidecar。如果某些工作负载不希望注入sidecar,可参考某些工作负载不注入sidecar,该如何配置?进行配置。
  • 操作步骤 登录应用服务网格控制台,单击服务网格的名称,进入网格详情页面。 在左侧导航栏选择“服务管理”,选择需要更改流量策略的服务,单击操作列的“流量治理”,在右侧页面进行流量策略更改。 接下来,以Bookinfo应用的reviews服务为例,结合 APM 应用性能管理 )的监控拓扑图来描述负载均衡算法更改前后的配置效果。 负载均衡算法为“轮询调度”时,不断访问productpage页面,观察流量如何分发。 进入“流量监控”页面,鼠标右键单击reviews服务,选择“展开”选项,这时可以看到所有实例的被分发情况。 从下图可以看出,请求依次分发给reviews的5个实例。这与负载均衡“轮询调度”算法相吻合。 在“负载均衡”页签中,单击“立即配置”,将负载均衡算法修改为“随机调度”。 图1 修改负载均衡算法 不断访问productpage页面,观察流量分发情况。 可以发现流量分发没有什么固定规律,各个实例的访问次数参差不齐,说明随机算法已经生效。
  • 创建JWT认证 创建JWK。 访问JWT工具网站,选择“Algorithm”为“RS512”,获取公钥(PUBLIC KEY)。 图1 生成公钥 在JWK to PEM Convertor online工具中选中“PEM-to-JWK (RSA Only)”,输入上一步获取的公钥,单击“submit”,将公钥转换为JWK。 图2 将公钥转换为JWK {"kty":"RSA","e":"AQAB","kid":"a78641b9-d81e-4241-b35a-71726c3fa053","n":"u1SU1LfVLPHCozMxH2Mo4lgOEePzNm0tRgeLezV6ffAt0gunVTLw7onLRnrq0_IzW7yWR7QkrmBL7jTKEn5u-qKhbwKfBstIs-bMY2Zkp18gnTxKLxoS2tFczGkPLPgizskuemMghRniWaoLcyehkd3qqGElvW_VDL5AaWTg0nLVkjRo9z-40RQzuVaE8AkAFmxZzow3x-VJYKdjykkJ0iT9wCS0DRTXu269V264Vf_3jvredZiKRkgwlL9xNAwxXFg0x_XFw005UWVRIkdgcKWTjpBP2dPwVZ4WWC-9aGVd-Gyn1o0CLelf4rEjGoXbAAEgAqeGUxrcIlbjXfbcmw"} 创建JWT认证。 登录应用服务网格控制台,单击网格名称,进入网格详情页面。 在左侧导航栏选择“服务管理”,在列表右上方选择服务所在命名空间。 选择httpbin服务,单击操作列的“安全”,在右侧页面选择“JWT认证”页签,单击“立即配置”,在弹出的“JWT认证”页面填写如下信息: 发行者:JWT的颁发者,本文设置为“test”。 令牌受众:JWT受众列表,设置哪些服务可以使用JWT Token访问目标服务,本文设置为“ASM”。 jwks:设置JWT信息,本文设置为{"keys": [1创建的JWK]},例如1创建的JWK为{"kty":"RSA","e":"AQAB","kid":"a78641b9-d81e-4241-b35a-71726c3****"},则jwks为{"keys": [{"kty":"RSA","e":"AQAB","kid":"a78641b9-d81e-4241-b35a-71726c3****"}]}。 图3 创建JWT认证 单击“确定”完成创建。
  • 验证JWT认证是否生效 使用JWT工具将JWT请求信息编码成JWT Token。 在“Decoded”区域输入以下JWT请求信息,在“Encode”区域将看到自动转换后的JWT Token。 HEADER:设置alg为“RS512”,输入1创建的JWK中的kid,设置type为“JWT”。 PAYLOAD:设置iss为“test”,aud为“ASM”,确保与2中配置的发行者、令牌受众保持一致。 VERIFY SIGNATURE:与1.a中的公钥保持一致。 图4 创建JWT Token 通过入口网关访问httpbin服务。 执行以下命令,带1创建的JWT Token访问服务。 TOKEN=1创建的JWT Token curl -I -H "Authorization: Bearer $TOKEN" http://{httpbin服务的外部访问地址}/ 预期输出: HTTP/1.1 200 OK server: istio-envoy date: Wed, 21 Sep 2022 03:11:48 GMT 执行以下命令,带无效的JWT Token访问服务。 curl -I -H "Authorization: Bearer invalidToken" http://{httpbin服务的外部访问地址}/ 预期输出: HTTP/1.1 401 Unauthorized www-authenticate: Bearer realm="http://***.***.***.***:***/", error="invalid_token" content-length: 145 content-type: text/plain date: Wed, 21 Sep 2022 03:12:54 GMT server: istio-envoy x-envoy-upstream-service-time: 19 修改2中创建的JWT认证,将令牌受众置空(表示对访问的服务不受限制),然后执行以下命令,带1创建的JWT Token访问服务。 curl -I -H "Authorization: Bearer $TOKEN" http://{httpbin服务的外部访问地址}/ 预期输出: HTTP/1.1 200 OK server: istio-envoy date: Wed, 21 Sep 2022 03:20:07 GMT 执行以下命令,不带JWT Token访问服务。 curl -I http://{httpbin服务的外部访问地址}/ 预期输出: HTTP/1.1 403 Forbidden content-length: 85 content-type: text/plain date: Wed, 21 Sep 2022 03:29:31 GMT server: istio-envoy x-envoy-upstream-service-time: 6 根据以上结果,可以看到带有正确的JWT Token的请求访问服务成功,带有错误的JWT Token或者不带JWT Token的请求访问服务失败,说明请求身份认证生效。
  • 创建灰度发布 登录应用服务网格控制台,使用以下任意一种方式进入创建灰度任务页面。 (快捷方式)在网格右上方,单击图标。 (快捷方式)在网格中心位置,单击“创建灰度任务”。 在网格详情页创建。 单击网格名称,进入网格详情页,单击左侧导航栏的“灰度发布”。 如果当前不存在发布中的灰度任务,请在金丝雀发布或蓝绿发布中单击“立即发布”;如果当前存在发布中的灰度任务,请单击右上角“灰度发布”。 配置灰度发布基本信息。 灰度类型 选择创建灰度发布的类型,可根据实际需求选择金丝雀发布和蓝绿发布,两者的区别可参考灰度发布概述。 灰度任务名称 自定义灰度任务的名称。输入长度范围为4到63个字符,包含小写英文字母、数字和中划线(-),并以小写英文字母开头,小写英文字母或数字结尾。 命名空间 服务所在的命名空间。 灰度发布服务 在下拉列表中选择待发布的服务。正在进行灰度任务的服务不可再进行选择,列表中已自动过滤。 工作负载 选择服务所属的工作负载。 版本号 当前服务版本号,版本号不支持修改。 图1 灰度发布基本信息 部署灰度版本信息。 部署集群 灰度发布服务所属的集群。 版本号 输入服务的灰度版本号。 实例数量 灰度版本的实例数量。灰度版本可以有一个或多个实例,用户可根据实际需求进行修改。每个灰度版本的实例都由相同的容器部署而成。 镜像名称 默认为该服务的镜像。 镜像版本 请选择灰度版本的镜像版本。 自定义镜像 用户可通过自定义镜像自行配置本地或第三方镜像地址,灰度发布镜像将采用所配置镜像。注意需确保自定义镜像地址有效,镜像可拉取。 图2 灰度版本信息 图3 灰度版本信息 单击“发布”,灰度版本开始创建。 请确保灰度版本的实例状态正常,且启动进度为100%时,再开始下一步进行流量策略的配置。发布之后进入观察灰度状态页面,可查看Pod监控,包括启动日志和性能监控信息。 (仅金丝雀发布涉及)单击“配置流量策略”,进行流量策略配置。 策略类型:分为“基于流量比例”和“基于请求内容”两种类型,通过页签选择确定。 基于流量比例 根据流量比例配置规则,从默认版本中切分指定比例的流量到灰度版本。例如75%的流量走默认版本,25%的流量走灰度版本。实际应用时,可根据需求将灰度版本的流量配比逐步增大并进行策略下发,来观测灰度版本的表现情况。 图4 基于流量比例 流量配比:可以为默认版本与灰度版本设置流量配比,系统将根据输入的流量配比来确定流量在两个版本间分发的比重。 基于请求内容 目前支持基于Cookie内容、自定义Header、Query、操作系统和浏览器的规则约束,只有满足规则约束的流量才可访问到灰度版本。例如,仅Cookie满足“User=Internal”的HTTP请求才能转发到灰度版本,其余请求仍然由默认版本接收。 图5 基于请求内容 Cookie内容 正则匹配:此处需要您使用正则表达式来匹配相应的规则。 自定义Header 完全匹配:只有完全匹配上才能生效。例如:设置Header的Key=User,Vaule=Internal,那么仅当Header中包含User且值为Internal的请求才由灰度版本响应。 正则匹配:此处需要您使用正则表达式来匹配相应的规则。 可以自定义请求头的key和value,value支持完全匹配和正则匹配。 Query 完全匹配:只有完全匹配上才能生效。例如:设置Query的Key=User,Vaule=Internal,那么仅当Query中包含User且值为Internal的请求才由灰度版本响应。 正则匹配:此处需要您使用正则表达式来匹配相应的规则。 可以自定义Query的key和value,value支持完全匹配和正则匹配。 允许访问的操作系统:请选择允许访问的操作系统,包括iOS、Android、Windows、macOS。 允许访问的浏览器:请选择允许访问的浏览器,包括Chrome、IE。 流量管理Yaml信息:根据所设置的参数自动生成规则YAML。 基于请求内容流量策略只对直接访问的入口服务有效。如果希望对所有服务有效,需要业务代码对HTTP请求的Header信息进行传播。 例如:如果您基于reviews服务,配置了基于请求内容的灰度发布策略,通过访问productpage服务的界面,是无法看到效果的。 原因是,您的客户端访问productpage服务携带了HTTP请求的Header信息,而productpage服务请求reviews服务时,将这些Header信息丢失了(详情可参考如何使用Istio调用链埋点),从而失去了基于请求内容的灰度发布效果。 设置完成后,单击“策略下发”。 灰度策略的生效需要几秒时间,您可以查看服务的流量监控,以及对原始版本及灰度版本的健康监控。
  • 金丝雀升级原理 ASM基础版网格支持金丝雀升级,金丝雀升级过程中将允许新老网格控制面同时存在,通过在命名空间打上版本对应的标签,可以选择一部分sidecar重启,并连接上新版本的控制面,待所有sidecar都正常连接到新控制面之后下面老版本网格的控制面。 需要注意的是,在部署新网格版本控制面时,istio-ingressgateway和istio-egressgatway的新版本也会同时部署,新老网格版本的网关将同时工作。
  • 操作步骤 登录应用服务网格控制台,确认网格是否需要升级版本。判断方法如下: 列表上方是否提示可升级版本的网格。 网格名称右侧是否存在“可升级”提示。 若存在可升级版本的网格,单击该网格名称,进入网格详情页面。 在左侧导航栏选择“网格配置”,单击“升级”页签。 根据升级路径选择合适的升级方式完成网格升级。 基础版本升级 升级详情请查看金丝雀升级。 企业版补丁更新 单击“补丁更新”,在弹出的提示框中单击“确定”。
  • 升级路径 网格类型 源版本 目标版本 升级方式 企业版 1.8.4-r1 1.8.6-r3 补丁更新(原地升级) 1.8.4-r2 1.8.6-r3 补丁更新(原地升级) 1.8.4-r3 1.8.6-r3 补丁更新(原地升级) 1.8.4-r4 1.8.6-r3 补丁更新(原地升级) 1.8.4-r5 1.8.6-r3 补丁更新(原地升级) 1.8.6-r1 1.8.6-r3 补丁更新(原地升级) 1.8.6-r2 1.8.6-r3 补丁更新(原地升级) 1.6.9-r4 1.6.9-r5 补丁更新(原地升级) 基础版 1.8.x 1.15.7-r1 先版本升级到1.13最新版本(金丝雀升级),再版本升级(金丝雀升级)到1.15.7-r1 1.13.x 1.15.7-r1 版本升级(金丝雀升级)到1.15.7-r1 1.15.5-rx 1.15.7-r1 补丁更新(金丝雀升级)到1.15.7-r1 1.15.x-rx 1.18.7-r1 版本升级(金丝雀升级)到1.18.7-r1 专有版 1.3.0-rx 1.15.7-r3 先迁移至基础版本网格,再版本升级至1.8.6-r4(金丝雀升级),再版本升级(金丝雀升级)到1.13.x最新版本,再版本升级(金丝雀升级)到1.15.7-r3 1.6.9-rx 1.15.7-r3 先迁移至基础版本网格,再版本升级至1.8.6-r4(金丝雀升级),再版本升级(金丝雀升级)到1.13.x最新版本,再版本升级(金丝雀升级)到1.15.7-r3 1.8.4-r1 1.15.7-r3 先迁移至基础版本网格,再版本升级(金丝雀升级)到1.13.x最新版本,再版本升级(金丝雀升级)到1.15.7-r3
  • 编辑已有istio资源 登录应用服务网格控制台,单击服务网格的名称,进入网格详情页面。 在左侧导航栏选择“网格配置”,单击“istio资源管理”页签。 在搜索框中选择istio资源类型(如“istio资源:virtualservices”),以及资源所属命名空间。 图1 筛选istio资源 单击操作列的“编辑”,在右侧页面修改相关配置,默认勾选底部提示信息,即控制台相关功能将不再开放使用,单击“确定”保存。 编辑Istio资源后,具体哪些控制台功能不可用,与Istio资源类型有关。详细说明请参见YAML配置资源处理策略。 支持以YAML或JSON格式显示,同时可以将配置文件下载到本地。
  • Istio资源说明 表1 Istio资源说明 资源类型 说明 AuthorizationPolicy 用于配置授权规则。 DestinationRule 定义路由的目标服务和流量策略。VirtualService和DestinationRule是流量控制最关键的两个资源,DestinationRule定义了网格中某个Service对外提供服务的策略及规则,包括负载均衡策略、异常点监测、熔断控制、访问连接池等。 EnvoyFilter EnvoyFilter为服务网格控制面提供更强大的扩展能力,使Envoy中Filter Chain具备自定义配置的能力。 Gateway Gateway定义了所有HTTP/TCP流量进入网格或者从网格中出站的统一入口和出口,它描述了一组对外公开的端口、协议、负载均衡以及SNI配置。 PeerAuthentication Istio的认证策略包含PeerAuthentication和RequestAuthentication,PeerAuthentication策略用于配置服务通信的mTLS模式。 RequestAuthentication Istio的认证策略包含PeerAuthentication和RequestAuthentication,RequestAuthentication策略用于配置服务的请求身份验证方法。 ServiceEntry 用于注册外部服务到网格内,并对其流量进行管理。 Sidecar 对Sidecar代理进行整体设置。 VirtualService 用于网格内路由的设置。VirtualService和DestinationRule是流量控制最关键的两个资源,在VirtualService中定义了一组路由规则,当流量进入时,逐个规则进行匹配,直到匹配成功后将流量转发给指定的路由地址。 WorkloadEntry 用来将虚拟机(VM)或者裸金属(Bare Metal)进行抽象,使其在网格化后作为与Kubernetes中的Pod同等重要的负载,具备流量管理、安全管理、可视化等能力。
  • 创建新的istio资源 登录应用服务网格控制台,单击服务网格的名称,进入网格详情页面。 在左侧导航栏选择“网格配置”,单击“istio资源管理”页签。 单击列表左上方的“创建”。 图2 创建istio资源 在右侧页面直接输入内容,或者单击“导入文件”,将本地编辑好的YAML或JSON文件上传上来。 确认文件内容无误,默认勾选底部提示信息,即控制台相关功能将不再开放使用,单击“确定”保存。 创建Istio资源后,具体哪些控制台功能不可用,与Istio资源类型有关,详细说明请参见YAML配置资源处理策略。
  • 操作步骤 登录应用服务网格控制台,单击服务网格的名称,进入网格详情页面。 在左侧导航栏选择“网格配置”,单击“升级”页签。 选择可升级版本,单击”版本升级”。 在弹出的提示信息后,单击“确定”。 进入升级前检查页面,单击“执行”,进行升级前检查,详情请查看升级前检查说明。 升级前检查结束后,单击“下一步”,进入控制面升级。 单击“升级”,进行控制面升级,详情请查看控制面升级说明。 控制面升级结束后,单击“下一步”,进行数据面升级。 单击“升级”,进行数据面升级,详情请查看数据面升级说明。 升级后处理,详情请查看升级后处理说明。
  • 操作步骤 登录应用服务网格控制台,单击服务网格的名称,进入网格详情页面。 在左侧导航栏选择“网关管理”,单击“添加网关”。 配置网关参数。 网关名称 请输入网关的名称。由小写字母、数字和中划线(-)组成,且必须以小写字母开头,小写字母或数字结尾,长度范围为4~59个字符。 集群选择 选择网关所属的集群。 访问方式 协议版本:支持选择IPV4和双栈两种,已开启ipv6的网格方可配置该参数。 服务网关使用弹性负载均衡服务(ELB)的负载均衡实例提供网络访问,支持共享型和独享型规格,且支持公网和私网。如果是独享型,实例规格需要选择“网络型(TCP/UDP)”,且网络类型需要勾选“IPv4私网”,确保负载均衡实例有私网IP地址。 访问入口 对外协议 请根据业务的协议类型选择。支持HTTP、GRPC、TCP、TLS及HTTPS五种协议类型的选择。 对外端口 开放在负载均衡服务地址的端口,可任意指定。 外部访问地址 系统自动填充负载均衡实例的IP地址,作为服务访问入口地址,您也可以将其修改为负载均衡实例关联的域名。 TLS终止 对外协议为HTTPS时,TLS终止为开启状态,且不可关闭。 对外协议为TLS时,可选择开启/关闭TLS终止。开启TLS终止时需要绑定证书,以支持TLS数据传输加密认证;关闭TLS终止时,网关将直接转发加密的TLS数据。 密钥证书 配置TLS协议并开启TLS时,需要绑定证书,以支持TLS数据传输加密认证。 配置HTTPS协议时,需要绑定密钥证书。 TLS最低版本/TLS最高版本 配置TLS协议并开启TLS终止,或者配置HTTPS协议时,提供TLS最低版本/TLS最高版本的选择。 图1 添加网关 (可选)配置路由参数。 请求的访问地址与转发规则匹配(转发规则由外部访问地址+URL组成)时,此请求将被转发到对应的目标服务处理。单击图标,弹出“添加路由”对话框。 URL匹配规则 前缀匹配:例如映射URL为/healthz,只要符合此前缀的URL均可访问。例如/healthz/v1、/healthz/v2。 完全匹配:只有完全匹配上才能生效。例如映射URL为/healthz,则必须为此URL才能访问。 支持通过YAML方式配置正则匹配规则,修改VirtualService配置文件即可: ... http: - delegate: name: nginx-80 namespace: default match: - uri: regex: /do[a-z]*/ ... 如上所示,“regex”表示按正则表达式方式匹配URL,注意URL必须以“/”开头。 URL 服务支持的映射URL,例如/example。 命名空间 服务网关所在的命名空间。 目标服务 添加网关的服务,直接在下拉框中选择。目标服务会根据对应的网关协议进行过滤,过滤规则请参见添加路由时,为什么选不到对应的服务?。 配置诊断失败的服务无法选择,需要先根据手动修复项或自动修复项进行修复。 访问端口 仅显示匹配对外协议的端口。 重写 (对外协议为HTTP/HTTPS时可配置) 重写HTTP/HTTPS URI和Host/Authority头,于转发前执行。默认关闭。开启后,需要配置如下参数: URI:使用此值重写URI的路径(或前缀),如果原始URI是基于前缀匹配,那么将替换相应匹配的前缀。 Host/Authority头:使用此值重写HTTP/HTTPS的Host/Authority头。 域名单独配置路由 为网关中某个域名单独配置路由规则。 图2 添加路由 配置完成后,单击“确定”。 网关添加完成后,可前往“服务管理”页面,获取服务外网访问地址。 图3 服务外网访问地址
共100000条