ASM支持通过数据面集群的Kubernetes API(KubeAPI)对Istio资源进行增删改查操作,支持使用Helm管理应用。本文介绍如何使用数据面集群KubeAPI访问Istio资源。
前提条件
- 已创建ASM企业版或旗舰版实例,且ASM实例需要高于1.12.4.50版本。具体操作,请参见创建ASM实例和升级ASM实例。 
- 已添加集群到ASM实例。具体操作,请参见添加集群到ASM实例。 
背景信息
Kubernetes API是通过HTTP提供的基于资源的编程接口,支持通过标准HTTP谓词(POST、PUT、PATCH、DELETE、GET)检索、创建、更新和删除集群的主资源,例如Deployment、Service等。更多信息,请参见Kubernetes API。
注意事项
- 强烈建议在单集群模式下使用集群KubeAPI访问Istio资源功能。如果ASM的数据平面有多个集群,则任意一个数据平面集群都可以对ASM上的Istio资源进行增删改查操作。 
- 开启数据面集群KubeAPI访问Istio资源功能后,数据面集群将无法删除istio-system命名空间。如果要删除,您需要先从ASM实例中移出数据面集群。 
- 开启数据面集群KubeAPI访问Istio资源功能后,数据平面需要等待1~2分钟的时间进行准备。 
- 删除数据平面的某一命名空间,不会删除ASM控制平面的对应命名空间,以及该命名空间下的Istio资源。 
- 如果ASM控制平面有某一命名空间,但是数据平面没有此命名空间,您需要先在数据平面创建出此命名空间,然后才能在这个命名空间下对Istio资源进行增删改查操作。否则会提示以下错误信息: - Error from server (NotFound): error when creating "xx.yaml": namespaces "daily-01" not found
- 如果在数据平面创建的Istio资源对应的命名空间在ASM控制平面不存在,则会在控制平面自动创建该命名空间。 
- 使用数据面集群KubeAPI创建的控制面Istio资源实际存储在控制面中。因此,请勿在通过数据面KubeAPI创建或更新Istio资源时,为资源增加属主为数据面资源的属主引用( - owner references)字段,避免控制面的Istio资源因无法找到属主而被垃圾回收。
启用集群KubeAPI访问Istio资源功能
创建ASM实例时启用该功能
2024年11月之后,新建实例时会默认启用此功能,无需做额外操作。在此之前创建的实例,请参考为已有ASM实例时启用该功能中的步骤进行操作。
为已有ASM实例时启用该功能
- 登录ASM控制台。 
- 在左侧导航栏,选择。 
- 在网格管理页面,找到待配置的实例,单击实例的名称或在操作列中单击管理。 
- 在基本信息页面,单击启用数据面KubeAPI访问右侧的启用。 
- 在确认启用数据面集群KubeAPI访问对话框,单击确定。 
场景示例一:使用kubectl管理Istio资源
启用集群KubeAPI访问Istio资源功能,使用kubectl连接集群后,您可以使用集群的KubeConfig创建、查询、修改和删除Istio资源,本文以虚拟服务为例。
- 使用以下命令,可以创建虚拟服务。 - kubectl apply -f <虚拟服务YAML文件名称>
- 使用以下命令,可以查询虚拟服务。 - kubectl get Virtualservice
- 使用以下命令,可以修改虚拟服务。 - kubectl edit Virtualservice <虚拟服务的名称>
- 使用以下命令,可以删除虚拟服务。 - kubectl delete Virtualservice <虚拟服务的名称>
场景示例二:使用Helm安装软件
启用集群KubeAPI访问Istio资源功能后,Helm可以使用集群的KubeConfig同时安装软件至集群,安装Istio资源至ASM。
- 在本地安装Helm。具体操作,请参见Helm。 说明- 使用kubectl连接集群后,Helm客户端会自动使用KubeConfig连接集群。 
- 下载Helm Chart示例istio-bookinfo至本地,然后对文件进行解压。 
- 进入到istio-bookinfo目录下,执行以下命令,安装istio-bookinfo。 - helm install -f values.yaml istio-bookinfo ./- 预期输出: - NAME:istio-bookinfo LAST DEPLOYED:THU May 26 16:44:19 2022 NAMESPACE:default STATUE:deployed REVISION:1 TEST SUITE:None
- 验证使用Helm安装软件是否成功。 - 在ACK控制台查看Bookinfo应用。 - 登录容器服务管理控制台,在左侧导航栏选择集群列表。 
- 在集群列表页面,单击目标集群名称,然后在左侧导航栏,选择。 
- 在无状态页面,设置命名空间为default。 - 可以看到使用Helm安装的details、productpage、ratings等应用。 说明- 在集群管理页面左侧导航栏选择,在Helm页面可以查看Helm安装包。  
 
- 在ASM控制台查看虚拟服务和网关规则。 - 登录ASM控制台。 
- 在左侧导航栏,选择。 
- 在网格管理页面,找到待配置的实例,单击实例的名称或在操作列中单击管理。 
- 在网格详情页面左侧导航栏,选择。 - 在虚拟服务页面,可以看到使用Helm安装的名为bookinfo的虚拟服务。  
- 在网格详情页面左侧导航栏,选择。 - 在网关规则页面,可以看到使用Helm安装的名为bookinfo-gateway的网关规则。  
 
 
相关操作
- 执行以下命令,可以查看Helm安装列表。 - helm list
- 执行以下命令,可以更新Helm Chart。 - helm upgrade -f values.yaml istio-bookinfo ./