設定 Istio 受管理的附加元件

Istio on IBM Cloud® Kubernetes Service 提供 Istio 的無縫安裝、Istio 控制平面元件的自動更新及生命週期管理,以及與平台記載和監視工具的整合。

從叢集移除其他 Istio 安裝

如果您先前曾透過 IBM Helm 圖表或其他方式,在叢集中安裝了 Istio,請在啟用受管 Istio 附加元件之前,先清理該 Istio 安裝。

開始之前: 確認群集中已安裝 Istio。 執行 kubectl get namespaces 並在輸出中尋找 istio-system 命名空間。

要移除其他 Istio 安裝:

  • 如果您是透過 IBM Cloud Istio Helm 中的圖表來安裝 Istio,

    1. 解除安裝 Istio Helm 部署。
        helm del istio --purge
        ```
    2. 如果您是使用 Helm 2.9 或更早版本,請刪除額外的工作資源。
    ```sh {: pre}
        kubectl -n istio-system delete job --all
        ```
    3. 解除安裝程序可能會花費 10 分鐘。 在叢集裡安裝 Istio 受管理附加程式之前,請先執行 `kubectl get namespaces`,然後驗證已移除 `istio-system` 名稱空間。
    
    
  • 如果您是手動安裝 Istio,或是使用 Istio 社群的 Helm 圖表進行安裝,請參閱 Istio 中的解除安裝說明文件

  • 如果您先前在叢集裡安裝了 BookInfo,請清除那些資源。

    1. 切換至 Istio 檔案位置的目錄。
        cd <filepath>/istio-1.29.5
        ```
    2. 刪除叢集裡的所有 BookInfo 服務、Pod 及部署。
    ```sh {: pre}
        samples/bookinfo/platform/kube/cleanup.sh
        ```
    3. 解除安裝程序可能會花費 10 分鐘。 在叢集裡安裝 Istio 受管理附加程式之前,請先執行 `kubectl get namespaces`,然後驗證已移除 `istio-system` 名稱空間。
    
    
    
    

安裝 Istio 附加程式

取代社群 Istio,您可以安裝管理的 Istio 附加元件。

開始之前

從主控台安裝 Istio 附加元件

  1. 叢集儀表板中,點選您要安裝「Istio」附加元件的叢集名稱。

  2. 請前往「附加元件」區段。

  3. 在「受管理 Istio」卡上,按一下安裝

  4. 再按一下安裝

  5. 在「受管理 Istio」卡上,驗證是否列出附加程式。

使用 CLI 安裝 Istio 附加元件

請登入您的帳戶。 適用的話,請將適當的資源群組設為目標。 設定叢集的環境定義。

  1. 將「container-service」外掛程式更新至最新版本。

    ibmcloud update && ibmcloud plugin update container-service
    
  2. 檢視支援的 Istio 版本

    ibmcloud ks addon-versions --addon istio
    
  3. 啟用 istio 附加程式。 已安裝正式發佈的「Istio」託管附加元件( 1.29.5 )的預設版本。

    ibmcloud ks cluster addon enable istio --cluster CLUSTER_NAME_OR_ID
    
  4. 確認受管理的 Istio 附加元件的狀態為 Addon Ready

    ibmcloud ks cluster addon ls --cluster CLUSTER_NAME_OR_ID
    

    輸出範例

    NAME            Version     Health State   Health Status
    istio           1.29.5       normal         Addon Ready
    
  5. 您也可以查看附加程式的個別元件,以確定已部署 Istio 服務及其對應的 Pod。

    kubectl get svc -n istio-system
    
    kubectl get pods -n istio-system
    
  6. 下一步,您可以將應用程式包含在 Istio 服務網格中。

安裝 istioctl CLI

在電腦上安裝 istioctl CLI 用戶端。 如需相關資訊,請參閱 istioctl 指令參考手冊

  1. 檢查您在群集中安裝的 Istio 版本。
    istioctl version
    
  2. 將與群集 Istio 版本相符的 istioctl 下載到您的電腦。
    curl -L https://istio.io/downloadIstio | ISTIO_VERSION=1.29.5 sh -
    
  3. 導覽至 Istio 套件目錄。
    cd istio-1.29.5
    
  4. Linux 和 macOS 使用者: 將 istioctl 用戶端新增至 PATH 系統變數。
    export PATH=$PWD/bin:$PATH
    

自訂 Istio 安裝

您可以透過編輯 managed-istio-custom ConfigMap 資源,自訂一組 Istio 配置選項。 這些設定包括對控制平面及服務網格中監視、記載及網路功能的額外控制。

  1. 說明 managed-istio-custom ConfigMap 資源,以檢視其內容和內嵌文件。
    kubectl describe cm managed-istio-custom -n ibm-operators
    
  2. 編輯 managed-istio-custom ConfigMap 資源。
    kubectl edit cm managed-istio-custom -n ibm-operators
    
  3. data 區段中,新增下列一或多個配置選項的 <key>: "<value>" 配對。
istio-components-pilot-requests-cpu
預設值: "500m"
在「 milli 」的 CPU 設定中,為「 istiod 」元件 Pod 配置 CPU 請求。 變更此值時請小心。 將此值設得太低可能會導致控制平面無法正常運作,而將此值設得太高可能會導致無法排程 istiod Pod。
istio-global-logging-level
預設值: "default:info"
定義控制平面元件的日誌範圍及日誌訊息等級。 範圍代表控制平面元件內的功能範圍,且每一個範圍都支援特定的日誌資訊層次。 default 記載範圍 (適用於非分類日誌訊息) 會在基本 info 層次套用至控制平面中的所有元件。
若要為個別元件範圍指定日誌等級,請輸入以逗號分隔的範圍與等級清單,例如: "<scope>:<level>,<scope>:<level>"。 如需各控制平面元件的範圍清單以及記錄訊息的資訊等級,請參閱 Istio 元件記錄文件。 若要變更資料平面的記載層次,請使用 istioctl proxy-config log <pod> --level <level> 指令。
istio-global-outboundTrafficPolicy-mode
預設值: "ALLOW_ANY"
預設情況下,服務網格中所有外發流量均被允許。 如果要封鎖從服務網眼到未定義在服務登錄中或在服務網眼內沒有 ServiceEntry 的任何主機的出埠資料流量,請設為 REGISTRY_ONLY
istio-global-proxy-accessLogFile
預設值: ""
Envoy 代理伺服器會將存取資訊輸出至其標準輸出。 當您對 Ingress 或 Egress 問題進行除錯時,這些日誌很有用。 若要在為 Envoy 容器執行 kubectl logs 指令時檢視此存取資訊,請設定為 "/dev/stdout"
istio-monitoring-telemetry
預設值: "true"
預設情況下,遙測指標與 Prometheus 的支援功能已啟用。 若要移除與遙測度量相關聯的任何效能問題,並停用所有監視,請設為 "false"
istio-meshConfig-enableTracing
預設值: "true"
預設情況下, Istio 會針對每 100 個請求中的 1 個生成追蹤區段。 若要停用追蹤跨距,請設為 "false"
istio-pilot-traceSampling
預設值: "1.0"
預設情況下, Istio 會針對每 100 個請求中的 1 個產生追蹤區間 ,抽樣率為 1%。 若要產生更多追蹤跨距,請增加百分比值。
istio-components-pilot-hpa-maxReplicas
預設值: "5"
預設情況下, Istio 會將 istiod 的預設水平 Pod 自動擴展器 (HPA) 最大 Pod 數設定為 5。 請勿增加此值,除非您有大型的服務網狀結構,而 istiod 需要增加資源來更新組態。

例如,您的 ConfigMap 可能與以下範例相似。

apiVersion: v1
data:
  istio-ingressgateway-zone-1: dal10
  <key: value> # such as istio-egressgateway-public-1-enabled: "false"
kind: ConfigMap
metadata:
  name: managed-istio-custom
  namespace: ibm-operators

在您的 ConfigMap? 由於您的 ConfigMap 包含使用者定義的值,因此 ConfigMap 不會隨時間更新任何已釋出的選項。 相反,您可以備份 ConfigMap 的副本,然後從群集中刪除 ConfigMap。 約 5 分鐘後,您的群集中會建立包含新選項的預設 ConfigMap。 然後,您可以將先前設定的設定從備份複製到此預設 ConfigMap, 設定任何新設定,並套用變更。

  1. 儲存並關閉配置檔。

  2. 如果您已變更 istio-global-logging-levelistio-global-proxy-accessLogFile 設定,則必須重新啟動資料平面 Pod 以將變更套用至它們。

    1. 取得不在 istio-system 名稱空間中的所有資料平面 Pod 清單。
        istioctl version --short=false | grep "data plane version" | grep -v istio-system
        ```
        輸出範例
    
        ```sh {: screen}
        data plane version: version.ProxyInfo{ID:"test-6f86fc4677-vsbsf.default", IstioVersion:"1.29.5"}
        data plane version: version.ProxyInfo{ID:"rerun-xfs-f8958bb94-j6n89.default", IstioVersion:"1.29.5"}
        data plane version: version.ProxyInfo{ID:"test2-5cbc75859c-jh6bx.default", IstioVersion:"1.29.5"}
        data plane version: version.ProxyInfo{ID:"minio-test-78b5d4597d-hkpvt.default", IstioVersion:"1.29.5"}
        data plane version: version.ProxyInfo{ID:"sb-887f89d7d-7s8ts.default", IstioVersion:"1.29.5"}
        data plane version: version.ProxyInfo{ID:"gid-deployment-5dc86db4c4-kdshs.default", IstioVersion:"1.29.5"}
        ```
    2. 透過刪除每一個 Pod 來重新啟動它。 在前一個步驟的輸出中,Pod 名稱及名稱空間在每一個項目中列出為 `data plane version: version.ProxyInfo{ID:"<pod_name>.<namespace>", IstioVersion:"1.29.5"}`。
    ```sh {: pre}
        kubectl delete pod <pod_name> -n <namespace>
        ```
    
要變更 ConfigMap 設定嗎?
如果您想更改添加到的設置ConfigMap,您可以使用補丁腳本。 例如,如果您已新增 istio-global-proxy-accessLogFile: "/dev/stdout" 設定,且稍後想要將它變更回 "",則可以執行 kubectl patch cm managed-istio-custom -n ibm-operators --type='json' -p='[{"op": "add", "path": "/data/istio-global-proxy-accessLogFile", "value":""}]'
需要在 1.24 或更高版本中調試自訂設定嗎?
在 ibm-operators namespace 中的 managed-istio-istiod-controlplane-values configmap 中檢查 helm value.yaml 和 helm 結果記錄。 value.yaml 會顯示您的變更是否已新增。 舵結果會顯示是否有任何語法錯誤。
kubectl get cm -n ibm-operators managed-istio-istiod-control-plane-values -o json | jq -r .data.\"values.yaml\"
kubectl get cm -n ibm-operators managed-istio-istiod-control-plane-values -o json | jq -r .data.\"values.yaml.helm.result\"
Thu, 23 Oct 2025 19:58:48 GMT HELM_SUCCESS: Release "istiod" has been upgraded. Happy Helming!
NAME: istiod
LAST DEPLOYED: Thu Oct 23 19:58:42 2025
NAMESPACE: istio-system
STATUS: deployed
REVISION: 275
TEST SUITE: None
NOTES:
"istiod" successfully installed!
需要在 1.23 中調試自訂設定嗎?
執行 kubectl logs -n ibm-operators -l name=managed-istio-operator,檢查 addon-istio-operator ( Istio 版本 1.10 至 1.23 ) pod 的日誌。 Istio 操作員驗證和核對您所做的任何自訂 Istio 變更。

如果停用 Istio 附加元件,則在卸載過程中不會移除 managed-istio-custom ConfigMap。 當您重新啟用 Istio 附加元件時,您自訂的 ConfigMap 會在安裝時套用。 如果您不想在以後安裝 Istio 時重新使用自訂設定,則必須在執行 kubectl delete cm -n ibm-operators managed-istio-custom 停用 Istio 附加元件後,刪除 ConfigMap。 重新啟用 Istio 附加元件時,會在安裝時套用預設的 ConfigMap。

從 Istio 附加元件遷移到社群 Istio

如果您使用的是受管理的 Istio 附加元件版本 1.21 到 1.23,您可以遷移到較後版本的社群 Istio 來代替。

開始之前: 如果您不再需要 Istio,您可以 卸載附加元件而不安裝社群 Istio 代替完成這些步驟。

步驟 1:從主控台停用 Istio 附加元件

從主控台或 CLI 停用附加元件。

  1. 叢集儀表板中,點選您要移除「Istio」附加元件的叢集名稱。

  2. 請前往「附加元件」區段。

  3. 在「受管理 Istio」卡上,按一下「動作」功能表圖示。

  4. 按一下解除安裝。 此叢集已停用受管的 Istio 附加元件。

  5. 在「受管 Istio」卡片上,請確認您已解除安裝的附加元件已不再出現在清單中。

步驟 1:從 CLI 停用 Istio 附加元件

停用附加元件,並驗證沒有其他 Istio 附加元件存在。

  1. 停用 istio 附加程式。
    ibmcloud ks cluster addon disable istio --cluster CLUSTER_NAME_OR_ID -f
    
  2. 驗證在此叢集裡已停用所有受管理 Istio 附加程式。 輸出中未傳回任何 Istio 附加程式。
    ibmcloud ks cluster addon ls --cluster CLUSTER_NAME_OR_ID
    
  3. 請等待 10 分鐘,再繼續下一步。 這讓我們有時間解除對 Istio 操作員的管理。

步驟 2:縮小 Istio 操作員

縮減「Istio」運算子的部署規模。 從 Istio 附加元件使用集群內 Istio 運算符號遷移至社群 Istio 使用 istioctl 時,必須避免兩種安裝方式爭奪 Istio 的控制權。 縮小操作員、刪除 IOP,然後刪除操作員的步驟可移除集群內的操作員,而無需卸載 Istio。

執行下列指令:

kubectl scale deployment -n ibm-operators addon-istio-operator --replicas=0

步驟 3:節省資源

請儲存您在 istio-system 命名空間中建立或修改的任何資源,以及所有由自訂資源定義 (CRD) 自動生成的 Kubernetes 資源。

  1. 儲存 managed-istio-custom ConfigMap 以疑難排解問題,或稍後重新安裝附加程式。

    kubectl get cm -n ibm-operators managed-istio-custom -o yaml > Customizations.yaml
    
  2. 儲存所有 IstioOperator CR (IOPS)。 叢集內 Istio 操作員在 IOP 上有一個 finalizer,以防止其被刪除,直到叢集內操作員刪除 IOP 中定義的資源。 作為移除 Istio 運算符號而不刪除 Istio 的一部分,您必須移除 finalizers。

    • 列出 IOP 資源:
        kubectl get iop -A
        ```
    - 針對列出的每個 IOP 資源,移除定案器。
    
        使用 `managed-istio` IOP 的範例:
        ```sh {: pre}
        kubectl patch -n ibm-operators istiooperator/managed-istio --type json --patch='[ { "op": "remove", "path": "/metadata/finalizers" } ]'
        ```
    - 對於列出的每一個 IOP 資源,將每一個儲存至檔案:
    ```sh {: pre}
        kubectl get iop -n <IOP_namespace> <IOP_name> -o yaml > <IOP_name>.yaml
        ```
    
  3. 請等待 10 分鐘,再繼續下一步。

步驟 4:變更 IOP 的安裝程式

刪除所有 Istio 操作員 (IOP) 資源,例如自訂入口閘道。

  1. 請確定您的 istioctl cli 工具是必要的修補程式版本。

    istioctl version
    
  2. 對於上一步儲存的每個 IOP 檔案,執行 istioctl upgrade 指令將 Istio 升級到與 istioctl 版本相符的版本。 此指令也將安裝和升級機制從使用集群內操作員變更為 istioctl

    istioctl upgrade -f <filename>.yaml
    

步驟 5:移除 Istio 操作員和 IOP

刪除 Istio 操作員部署、服務帳戶、群集角色綁定、群集角色和所有 IOP。 Istio 從叢集內的 Istio 操作員轉移到基於 istioctl 的安裝。 現在您可以清理集群內 Istio 操作員安裝的殘餘物,同時縮小其規模。

  1. 執行下列指令刪除 Istio 操作員部署:

    kubectl delete deployment -n ibm-operators addon-istio-operator --ignore-not-found=true
    kubectl delete serviceaccount -n ibm-operators addon-istio-operator --ignore-not-found=true
    kubectl delete clusterrolebinding addon-istio-operator --ignore-not-found=true
    kubectl delete clusterrole addon-istio-operator --ignore-not-found=true
    
  2. 刪除 IOP。

    • 列出 IOP 資源:
        kubectl get iop -A
        ```
    - 對於列出的每個 IOP 資源,將其刪除:
    ```sh {: pre}
        kubectl delete IstioOperator <resource_name> -n <namespace>
        ```
    

步驟 6:移除 ConfigMap

因為 ConfigMap 較早前已儲存,所以可以移除。

移除 managed-istio-custom ConfigMap。

kubectl delete cm -n ibm-operators managed-istio-custom

移除附加元件的動作已完成,您可以繼續使用並視需要升級社群 Istio。

解除安裝「Istio」附加元件

若您已完成對 Istio 的使用,您可以清理叢集中的 Istio 資源,並解除安裝 Istio 附加元件。

步驟 1: 在解除安裝之前儲存資源

即會移除您在 istio-system 名稱空間中建立或修改的任何資源。 若要保留這些資源,請在卸載 Istio 附加元件之前儲存這些資源。

  1. 儲存 managed-istio-custom ConfigMap 以疑難排解問題,或稍後重新安裝附加程式。

    kubectl get cm -n ibm-operators managed-istio-custom -o yaml > Customizations.yaml
    
  2. 對於 1.23 及更早版本,請儲存所有 IstioOperator CR (IOP)。

    a. 列出 IOP 資源:

    kubectl get iop -A
    

    b. 對於列出的每一個 IOP 資源,將每一個儲存至檔案:

    kubectl get iop -n <IOP_namespace> <IOP_name> -o yaml > <IOP_name>.yaml
    

步驟 2:解除安裝 Istio 附加元件

從主控台或 CLI 解除安裝附加程式。 對於 Istio 1.20 及更早版本,任何自訂 Istio 操作員 (IOP) 資源都會自動刪除。

從主控台解除安裝 Istio 附加元件

  1. 叢集儀表板中,點選您要移除「Istio」附加元件的叢集名稱。

  2. 請前往「附加元件」區段。

  3. 在「受管理 Istio」卡上,按一下「動作」功能表圖示。

  4. 按一下解除安裝。 此叢集中的「Istio」託管附加元件已停用,且此叢集中的所有 Istio 資源均已移除。

  5. 在「受管 Istio」卡片上,請確認您已解除安裝的附加元件已不再出現在清單中。

從 CLI 卸載 Istio 附加元件

如果您未安裝已淘汰的 istio-sample-bookinfoistio-extras 附加程式,請跳過步驟 1 和 2。

  1. 停用 istio-sample-bookinfo 附加程式。
    ibmcloud ks cluster addon disable istio-sample-bookinfo --cluster CLUSTER_NAME_OR_ID
    
  2. 停用 istio-extras 附加程式。
    ibmcloud ks cluster addon disable istio-extras --cluster CLUSTER_NAME_OR_ID
    
  3. 停用 istio 附加程式。
    ibmcloud ks cluster addon disable istio --cluster CLUSTER_NAME_OR_ID -f
    
  4. 驗證在此叢集裡已停用所有受管理 Istio 附加程式。 輸出中未傳回任何 Istio 附加程式。
    ibmcloud ks cluster addon ls --cluster CLUSTER_NAME_OR_ID
    

步驟 3: 移除資源

儲存資源並停用附加程式之後,可以移除資源。

  1. 解除安裝期間不會移除 managed-istio-custom ConfigMap。 如果您之後重新啟用 Istio 附加元件,任何 您對 ConfigMap 都會在安裝時套用。 如果您不想在以後安裝 Istio 時重新使用自訂設定,則必須刪除 ConfigMap。

    kubectl delete cm -n ibm-operators managed-istio-custom
    
  2. 對於 1.23 及更早版本,請刪除自訂 Istio 操作員 (IOP) 資源和 IOP。

    a. 刪除您建立的任何自訂 Istio 操作員 (IOP) 資源,例如自訂入口閘道。 執行此指令時,Istio 操作員會自動移除 IOP 資源所建立的任何資源,例如部署或服務。

    kubectl delete IstioOperator <resource_name> -n <namespace>
    

    b. 刪除 managed-istio IOP。

    kubectl delete iop -n ibm-operators managed-istio
    
  3. 對於 1.24 及以後的版本,請儲存然後刪除 addon-istio 閘道 ConfigMaps, 移除自訂閘道,並刪除 Istio 控制平面。

    a. 保存 addon-istio 閘道 ConfigMaps。

    kubectl get cm -n ibm-operators managed-istio-ingressgateway-values -o json | jq -r .data.\"values.yaml\" > ingress-gateway.values
    kubectl get cm -n ibm-operators managed-istio-egressgateway-values -o json | jq -r .data.\"values.yaml\" > egress-gateway.values
    

    b. 刪除 addon-istio 閘道 ConfigMaps。

    kubectl delete cm -n ibm-operators managed-istio-egressgateway-values
    kubectl delete cm -n ibm-operators managed-istio-ingressgateway-values
    

    c. 移除 自訂閘道

    d. 刪除 Istio 控制平面。

    istioctl uninstall -y --purge
    

    輸出:

    All Istio resources will be pruned from the cluster
    Removed apps/v1, Kind=Deployment/istiod.istio-system.
    Removed /v1, Kind=Service/istiod.istio-system.
    Removed /v1, Kind=ConfigMap/istio.istio-system.
    Removed /v1, Kind=ConfigMap/istio-sidecar-injector.istio-system.
    Removed /v1, Kind=Pod/istiod-7f59b54bfd-p5f4d.istio-system.
    Removed /v1, Kind=Pod/istiod-7f59b54bfd-zckw6.istio-system.
    Removed policy/v1, Kind=PodDisruptionBudget/istiod.istio-system.
    Removed autoscaling/v2, Kind=HorizontalPodAutoscaler/istiod.istio-system.
    Removed admissionregistration.k8s.io/v1, Kind=MutatingWebhookConfiguration/istio-sidecar-injector..
    ✔ Uninstall complete
    
  4. 請等待 10 分鐘,再繼續下一步。

步驟 4:移除 Istio 操作員

對於 1.23 及更早的版本,在完全卸載附加元件後,您可以移除 Istio 操作員。

刪除 Istio 操作員部署、服務帳戶、群集角色綁定和群集角色。

kubectl delete deployment -n ibm-operators addon-istio-operator --ignore-not-found=true
kubectl delete serviceaccount -n ibm-operators addon-istio-operator --ignore-not-found=true
kubectl delete clusterrolebinding addon-istio-operator --ignore-not-found=true
kubectl delete clusterrole addon-istio-operator --ignore-not-found=true