通過(guò)數(shù)據(jù)面集群KubeAPI訪問(wèn)Istio資源
ASM支持通過(guò)數(shù)據(jù)面集群的Kubernetes API(KubeAPI)對(duì)Istio資源進(jìn)行增刪改查操作,支持使用Helm管理應(yīng)用。本文介紹如何使用數(shù)據(jù)面集群KubeAPI訪問(wèn)Istio資源。
前提條件
已創(chuàng)建ASM企業(yè)版或旗艦版實(shí)例,且ASM實(shí)例需要高于1.12.4.50版本。具體操作,請(qǐng)參見(jiàn)創(chuàng)建ASM實(shí)例和升級(jí)ASM實(shí)例。
已添加集群到ASM實(shí)例。具體操作,請(qǐng)參見(jiàn)添加集群到ASM實(shí)例。
背景信息
Kubernetes API是通過(guò)HTTP提供的基于資源的編程接口,支持通過(guò)標(biāo)準(zhǔn)HTTP謂詞(POST、PUT、PATCH、DELETE、GET)檢索、創(chuàng)建、更新和刪除集群的主資源,例如Deployment、Service等。更多信息,請(qǐng)參見(jiàn)Kubernetes API。
注意事項(xiàng)
強(qiáng)烈建議在單集群模式下使用集群KubeAPI訪問(wèn)Istio資源功能。如果ASM的數(shù)據(jù)平面有多個(gè)集群,則任意一個(gè)數(shù)據(jù)平面集群都可以對(duì)ASM上的Istio資源進(jìn)行增刪改查操作。
開(kāi)啟數(shù)據(jù)面集群KubeAPI訪問(wèn)Istio資源功能后,數(shù)據(jù)面集群將無(wú)法刪除istio-system命名空間。如果要?jiǎng)h除,您需要先從ASM實(shí)例中移出數(shù)據(jù)面集群。
開(kāi)啟數(shù)據(jù)面集群KubeAPI訪問(wèn)Istio資源功能后,數(shù)據(jù)平面需要等待1~2分鐘的時(shí)間進(jìn)行準(zhǔn)備。
刪除數(shù)據(jù)平面的某一命名空間,不會(huì)刪除ASM控制平面的對(duì)應(yīng)命名空間,以及該命名空間下的Istio資源。
如果ASM控制平面有某一命名空間,但是數(shù)據(jù)平面沒(méi)有此命名空間,您需要先在數(shù)據(jù)平面創(chuàng)建出此命名空間,然后才能在這個(gè)命名空間下對(duì)Istio資源進(jìn)行增刪改查操作。否則會(huì)提示以下錯(cuò)誤信息:
Error from server (NotFound): error when creating "xx.yaml": namespaces "daily-01" not found
如果在數(shù)據(jù)平面創(chuàng)建的Istio資源對(duì)應(yīng)的命名空間在ASM控制平面不存在,則會(huì)在控制平面自動(dòng)創(chuàng)建該命名空間。
使用數(shù)據(jù)面集群KubeAPI創(chuàng)建的控制面Istio資源實(shí)際存儲(chǔ)在控制面中。因此,請(qǐng)勿在通過(guò)數(shù)據(jù)面KubeAPI創(chuàng)建或更新Istio資源時(shí),為資源增加屬主為數(shù)據(jù)面資源的屬主引用(
owner references
)字段,避免控制面的Istio資源因無(wú)法找到屬主而被垃圾回收。
啟用集群KubeAPI訪問(wèn)Istio資源功能
創(chuàng)建ASM實(shí)例時(shí)啟用該功能
登錄ASM控制臺(tái)。
在左側(cè)導(dǎo)航欄,選擇 。
在網(wǎng)格管理頁(yè)面,單擊創(chuàng)建新網(wǎng)格。
在創(chuàng)建服務(wù)網(wǎng)格頁(yè)面,選中啟用數(shù)據(jù)面集群KubeAPI訪問(wèn)Istio資源,仔細(xì)閱讀并選中服務(wù)協(xié)議,然后單擊創(chuàng)建服務(wù)網(wǎng)格。
關(guān)于其他配置項(xiàng)的說(shuō)明,請(qǐng)參見(jiàn)創(chuàng)建ASM實(shí)例。
為已有ASM實(shí)例時(shí)啟用該功能
登錄ASM控制臺(tái)。
在左側(cè)導(dǎo)航欄,選擇 。
在網(wǎng)格管理頁(yè)面,找到待配置的實(shí)例,單擊實(shí)例的名稱(chēng)或在操作列中單擊管理。
在基本信息頁(yè)面,單擊啟用數(shù)據(jù)面KubeAPI訪問(wèn)右側(cè)的啟用。
在確認(rèn)啟用數(shù)據(jù)面集群KubeAPI訪問(wèn)對(duì)話框,單擊確定。
場(chǎng)景示例一:使用kubectl管理Istio資源
啟用集群KubeAPI訪問(wèn)Istio資源功能,使用kubectl連接集群后,您可以使用集群的KubeConfig創(chuàng)建、查詢、修改和刪除Istio資源,本文以虛擬服務(wù)為例。
使用以下命令,可以創(chuàng)建虛擬服務(wù)。
kubectl apply -f <虛擬服務(wù)YAML文件名稱(chēng)>
使用以下命令,可以查詢虛擬服務(wù)。
kubectl get Virtualservice
使用以下命令,可以修改虛擬服務(wù)。
kubectl edit Virtualservice <虛擬服務(wù)的名稱(chēng)>
使用以下命令,可以刪除虛擬服務(wù)。
kubectl delete Virtualservice <虛擬服務(wù)的名稱(chēng)>
場(chǎng)景示例二:使用Helm安裝軟件
啟用集群KubeAPI訪問(wèn)Istio資源功能后,Helm可以使用集群的KubeConfig同時(shí)安裝軟件至集群,安裝Istio資源至ASM。
在本地安裝Helm。具體操作,請(qǐng)參見(jiàn)Helm。
說(shuō)明使用kubectl連接集群后,Helm客戶端會(huì)自動(dòng)使用KubeConfig連接集群。
下載Helm Chart示例istio-bookinfo至本地,然后對(duì)文件進(jìn)行解壓。
進(jìn)入到istio-bookinfo目錄下,執(zhí)行以下命令,安裝istio-bookinfo。
helm install -f values.yaml istio-bookinfo ./
預(yù)期輸出:
NAME:istio-bookinfo LAST DEPLOYED:THU May 26 16:44:19 2022 NAMESPACE:default STATUE:deployed REVISION:1 TEST SUITE:None
驗(yàn)證使用Helm安裝軟件是否成功。
在ACK控制臺(tái)查看Bookinfo應(yīng)用。
在控制臺(tái)左側(cè)導(dǎo)航欄中,單擊集群。
在集群列表頁(yè)面中,單擊目標(biāo)集群名稱(chēng)或者目標(biāo)集群右側(cè)操作列下的詳情。
在集群管理頁(yè)面左側(cè)導(dǎo)航欄,選擇
。在無(wú)狀態(tài)頁(yè)面,設(shè)置命名空間為default。
可以看到使用Helm安裝的details、productpage、ratings等應(yīng)用。
說(shuō)明在集群管理頁(yè)面左側(cè)導(dǎo)航欄選擇
,在Helm頁(yè)面可以查看Helm安裝包。
在ASM控制臺(tái)查看虛擬服務(wù)和網(wǎng)關(guān)規(guī)則。
登錄ASM控制臺(tái)。
在左側(cè)導(dǎo)航欄,選擇
。在網(wǎng)格管理頁(yè)面,找到待配置的實(shí)例,單擊實(shí)例的名稱(chēng)或在操作列中單擊管理。
在網(wǎng)格詳情頁(yè)面左側(cè)導(dǎo)航欄,選擇
。在虛擬服務(wù)頁(yè)面,可以看到使用Helm安裝的名為bookinfo的虛擬服務(wù)。
在網(wǎng)格詳情頁(yè)面左側(cè)導(dǎo)航欄,選擇
。在網(wǎng)關(guān)規(guī)則頁(yè)面,可以看到使用Helm安裝的名為bookinfo-gateway的網(wǎng)關(guān)規(guī)則。
相關(guān)操作
執(zhí)行以下命令,可以查看Helm安裝列表。
helm list
執(zhí)行以下命令,可以更新Helm Chart。
helm upgrade -f values.yaml istio-bookinfo ./