该平台通过封装 CRD 或操作 Istio 资源(DestinationRule、VirtualService 等)提供 Istio 功能。操作(添加、删除、修改)Istio 资源的方式包括:
用户在平台 UI 上执行操作。
在特定功能页面中执行操作。例如,在服务详情页面的 Routes 标签页中,通过 Create Route 创建一个虚拟服务资源。
直接编辑集群 Resources 页面上的 Istio 资源的 YAML 文件。管理员可以对 Kubernetes 资源(包括 Istio 资源)执行 YAML 的创建、修改或删除操作。
服务网格组件 Controller (global-asm-controller/asm-controller) 根据 CRD 或 API 自动进行调优,在调优过程中,Controller 会自动更新 Istio 资源。
例如,在平台的 UI 上为服务创建负载均衡策略后,Controller 会自动创建相应的 DestinationRule 资源;反之,在删除负载均衡策略后,Controller 会自动删除相应的 DestinationRule 资源。
当产品 UI 的功能和原生 Istio 支持未能满足您的期望时,您可以参考本文档在 Platform Management > Clusters > Resources 页面自定义并应用 Istio 资源的 YAML 文件中的变更,暂时使用原生 Istio 提供的功能。
自定义和应用 Istio 资源配置变更的方法如下:
在 Istio 资源上添加注释 asm.cpaas.io/user-managed: "true"
,以将其从 Controller 控制中分离,避免 Controller 组件恢复或修改自定义更改。
根据 Istio 提供的配置参考自定义 YAML 配置。
通过此方法配置的 Istio 资源将不再受 Controller 组件的控制,用户需要手动管理。
如果修改后的 YAML 配置不符合 Istio 的设计,可能会导致未知的问题影响功能。
当您将来升级到新的 Istio 版本时,平台将不会处理未管理资源的兼容性升级。您需要自行评估兼容性并进行兼容性处理。
下面,我们将使用修改 DestinationRule 资源的场景,为服务的多个端口配置不同的负载均衡策略,来说明配置方法。
服务 s1 有 2 个端口 80
(HTTP 协议)和 81
(TCP 协议)。在通过 UI 为服务创建负载均衡策略时,只支持为所有端口配置相同的策略(例如,最少请求负载均衡)。您可以修改 s1 的 DestinationRule 资源,为端口 80
和 81
分别配置不同的负载均衡策略。
进入服务网格平台后,在左侧导航栏单击 Services。
点击要配置的 service name。
在 Policies 标签页下,点击 Create Policy > Load Balancer。
选择 Minimum Request Load 策略,然后单击 Create。
提示:成功创建负载均衡策略后,Controller 组件会自动创建一个名为 asm-<service name>
的 DestinationRule 资源。您可以在 Resources 中查看该资源的 YAML 文件。
点击顶部导航栏中的产品视图切换入口,切换到 Platform Management。
在左侧导航栏中,点击 Clusters > Resources。
提示:您可以通过顶部导航切换集群。
在服务所在的命名空间中,搜索名为 asm-<service name>
的 DestinationRule 资源。
点击 > DestinationRule 右侧的 Update。
根据下面的示例,添加注释 asm.cpaas.io/user-managed: "true"
并分别为服务的端口配置 负载均衡策略。