設定 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-level 或 istio-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-bookinfo 和 istio-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