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 ./