全部產品
Search
文件中心

Alibaba Cloud Service Mesh:通過資料面叢集KubeAPI訪問Istio資源

更新時間:Aug 01, 2024

ASM支援通過資料面叢集的Kubernetes API(KubeAPI)對Istio資源進行增刪改查操作,支援使用Helm管理應用。本文介紹如何使用資料面叢集KubeAPI訪問Istio資源。

前提條件

背景資訊

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執行個體時啟用該功能

  1. 登入ASM控制台

  2. 在左側導覽列,選擇服務網格 > 網格管理

  3. 網格管理頁面,單擊建立新網格

  4. 建立服務網格頁面,選中啟用資料面叢集KubeAPI訪問Istio資源,仔細閱讀並選中服務合約,然後單擊建立服務網格

    關於其他配置項的說明,請參見建立ASM執行個體

為已有ASM執行個體時啟用該功能

  1. 登入ASM控制台

  2. 在左側導覽列,選擇服務網格 > 網格管理

  3. 網格管理頁面,找到待配置的執行個體,單擊執行個體的名稱或在操作列中單擊管理

  4. 基本資料頁面,單擊啟用資料面KubeAPI訪問右側的啟用

  5. 確認啟用資料面叢集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。

  1. 擷取叢集KubeConfig並通過kubectl工具串連叢集

  2. 在本地安裝Helm。具體操作,請參見Helm

    說明

    使用kubectl串連叢集後,Helm用戶端會自動使用KubeConfig串連叢集。

  3. 下載Helm Chart樣本istio-bookinfo至本地,然後對檔案進行解壓。

  4. 進入到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
  5. 驗證使用Helm安裝軟體是否成功。

    1. 在ACK控制台查看Bookinfo應用。

      1. 登入Container Service管理主控台

      2. 在控制台左側導覽列中,單擊叢集

      3. 叢集列表頁面中,單擊目的地組群名稱或者目的地組群右側操作列下的詳情

      4. 在叢集管理頁面左側導覽列,選擇工作負載 > 無狀態

      5. 無狀態頁面,設定命名空間為default。

        可以看到使用Helm安裝的details、productpage、ratings等應用。

        說明

        在叢集管理頁面左側導覽列選擇應用 > Helm,在Helm頁面可以查看Helm安裝包。

        應用

    2. 在ASM控制台查看虛擬服務和網關規則。

      1. 登入ASM控制台

      2. 在左側導覽列,選擇服務網格 > 網格管理

      3. 網格管理頁面,找到待配置的執行個體,單擊執行個體的名稱或在操作列中單擊管理

      4. 在網格詳情頁面左側導覽列,選擇流量管理中心 > 虛擬服務

        虛擬服務頁面,可以看到使用Helm安裝的名為bookinfo的虛擬服務。虛擬服務

      5. 在網格詳情頁面左側導覽列,選擇ASM網關 > 網關規則

        網關規則頁面,可以看到使用Helm安裝的名為bookinfo-gateway的網關規則。網關規則

相關操作

  • 執行以下命令,可以查看Helm安裝列表。

    helm list
  • 執行以下命令,可以更新Helm Chart。

    helm upgrade -f values.yaml istio-bookinfo ./