跳至內容

為 Knative 安裝 Istio

本指南將引導您手動安裝和自訂 Istio 以用於 Knative。

如果您的雲端平台提供受管理的 Istio 安裝,我們建議以該方式安裝 Istio,除非您需要自訂安裝。

開始之前

您需要

  • 已建立的 Kubernetes 叢集。
  • 已安裝 istioctl
  • 已安裝 Knative Serving(也可以在 Istio 之後安裝)。

支援的 Istio 版本

您可以在 Knative Net Istio 版本頁面上檢視最新的測試 Istio 版本。

安裝 Istio

當您安裝 Istio 時,根據您的目標有幾個選項。對於適用於大多數 Knative 使用案例的基本 Istio 安裝,請依照 使用 istioctl 的基本安裝指示。如果您熟悉 Istio 並知道您想要哪種安裝,請閱讀選項並選擇適合您需求的安裝。

使用 istioctl 的基本安裝

  1. 您可以使用 istioctl 輕鬆安裝和自訂您的 Istio 安裝。

    istioctl install -y
    
  2. 若要將 Istio 與 Knative Serving 整合,請執行下列命令安裝 Knative Istio 控制器

    kubectl apply -f https://github.com/knative/net-istio/releases/download/knative-v1.16.0/net-istio.yaml
    

    提示

    請務必同時安裝 Knative Serving設定 DNS

形成服務網格

Istio 服務網格提供了一些好處

  • 允許您開啟 相互 TLS,這可以保護叢集中服務到服務的流量。

  • 允許您使用 Istio 授權原則,根據 Istio 服務角色控制對每個 Knative 服務的存取。

如果您想要使用 Istio 作為服務網格,您必須確保將 istio sidecar 注入到應該成為服務網格一部分的所有 pods 中。有兩種方法可以實現這一點

  • 使用 自動 sidecar 注入,並在應該成為服務網格一部分的所有 namespaces 上設定 istio-injection=enabled 標籤

  • 在應該成為服務網格一部分的所有 pods 上使用 手動 sidecar 注入

搭配 Knative 使用 Istio mTLS 功能

由於在 knative-serving 命名空間和執行服務所在的命名空間之間有一些網路通訊,因此您需要在啟用 mTLS 的環境中進行額外的準備。

注意

強烈建議使用 自動 sidecar 注入,以避免手動將 sidecar 注入到 knative-serving 中的所有 pods

  1. knative-serving 系統命名空間上啟用 sidecar 注入。

    kubectl label namespace knative-serving istio-injection=enabled
    
  2. 透過使用以下範本建立 YAML 檔案,將 PeerAuthentication 設定為 PERMISSIVE 在 knative-serving 系統命名空間上

    apiVersion: "security.istio.io/v1beta1"
    kind: "PeerAuthentication"
    metadata:
      name: "default"
      namespace: "knative-serving"
    spec:
      mtls:
        mode: PERMISSIVE
    
  3. 執行以下命令套用 YAML 檔案

    kubectl apply -f <filename>.yaml
    
    其中 <filename> 是您在上一步中建立的檔案名稱。

設定安裝

更新 config-istio configmap 以使用非預設的本機閘道

如果您為名稱不是 knative-local-gateway 的本機閘道建立自訂服務和部署,則需要在 knative-serving 命名空間下更新閘道 configmap config-istio

  1. 編輯 config-istio configmap

    kubectl edit configmap config-istio -n knative-serving
    
  2. local-gateways 欄位替換為自訂服務。例如,如果您將服務和部署都命名為 custom-local-gateway 在命名空間 istio-system 下,則應將其更新為

    local-gateways: |
      - name: knative-local-gateway
        namespace: knative-serving
        service: custom-local-gateway.istio-system.svc.cluster.local
    

例如,如果自訂服務和部署都標記為 custom: custom-local-gateway,而不是預設的 istio: knative-local-gateway,則必須更新 knative-serving 命名空間中的閘道實例 knative-local-gateway

kubectl edit gateway knative-local-gateway -n knative-serving

將標籤選擇器替換為您的服務標籤

istio: knative-local-gateway

對於先前提到的服務,應將其更新為

custom: custom-local-gateway

如果服務連接埠(與 knative-local-gateway 的連接埠相比)發生變更,請相應地更新閘道中的連接埠資訊。

驗證您的 Istio 安裝

檢視您的 Istio 安裝狀態,以確保安裝成功。您可以使用 istioctl 驗證安裝

istioctl verify-install

Istio 資源

清除 Istio

請參閱 解除安裝 Istio

下一步

我們使用分析和 Cookie 來瞭解網站流量。關於您使用我們網站的資訊會與 Google 分享以達到此目的。瞭解更多。