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实例时启用该功能
登录ASM控制台。
在左侧导航栏,选择 。
在网格管理页面,单击创建新网格。
在创建服务网格页面,选中启用数据面集群KubeAPI访问Istio资源,仔细阅读并选中服务协议,然后单击创建服务网格。
关于其他配置项的说明,请参见创建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 ./