平台通过封装 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 支持的期望时,您可以参考本文档,在 平台管理 > 集群 > 资源 页面自定义并应用对 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。
点击要配置的 服务名称。
在 Policies 标签页下,点击 Create Policy > Load Balancer。
选择 Minimum Request Load 策略后,点击 Create。
提示:成功创建负载均衡策略后,Controller 组件会自动创建名为 asm-<service name>
的 DestinationRule 资源;您可以在 Resources 中查看该资源的 YAML 文件。
点击顶部导航栏的产品视图切换入口,切换到 平台管理。
在左侧导航栏点击 集群 > 资源。
提示:可通过顶部导航切换集群。
在服务所在的命名空间中,搜索名为 asm-<service name>
的 DestinationRule 资源。
点击 DestinationRule 右侧的 > 更新。
参考以下示例,添加注解 asm.cpaas.io/user-managed: "true"
,并分别为服务的端口配置负载均衡策略。