為 Knative 安裝 Istio¶
本指南將引導您手動安裝和自訂 Istio 以用於 Knative。
如果您的雲端平台提供受管理的 Istio 安裝,我們建議以該方式安裝 Istio,除非您需要自訂安裝。
開始之前¶
您需要
- 已建立的 Kubernetes 叢集。
- 已安裝
istioctl
。 - 已安裝 Knative Serving(也可以在 Istio 之後安裝)。
支援的 Istio 版本¶
您可以在 Knative Net Istio 版本頁面上檢視最新的測試 Istio 版本。
安裝 Istio¶
當您安裝 Istio 時,根據您的目標有幾個選項。對於適用於大多數 Knative 使用案例的基本 Istio 安裝,請依照 使用 istioctl 的基本安裝指示。如果您熟悉 Istio 並知道您想要哪種安裝,請閱讀選項並選擇適合您需求的安裝。
使用 istioctl 的基本安裝¶
-
您可以使用
istioctl
輕鬆安裝和自訂您的 Istio 安裝。istioctl install -y
-
若要將 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
。
-
在
knative-serving
系統命名空間上啟用 sidecar 注入。kubectl label namespace knative-serving istio-injection=enabled
-
透過使用以下範本建立 YAML 檔案,將
PeerAuthentication
設定為PERMISSIVE
在 knative-serving 系統命名空間上apiVersion: "security.istio.io/v1beta1" kind: "PeerAuthentication" metadata: name: "default" namespace: "knative-serving" spec: mtls: mode: PERMISSIVE
-
執行以下命令套用 YAML 檔案
其中kubectl apply -f <filename>.yaml
<filename>
是您在上一步中建立的檔案名稱。
設定安裝¶
更新 config-istio
configmap 以使用非預設的本機閘道¶
如果您為名稱不是 knative-local-gateway
的本機閘道建立自訂服務和部署,則需要在 knative-serving
命名空間下更新閘道 configmap config-istio
。
-
編輯
config-istio
configmapkubectl edit configmap config-istio -n knative-serving
-
將
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 Kubernetes 入門指南。
-
如需使用
istioctl
安裝 Istio 時可用的完整設定列表,請參閱 Istio 安裝選項參考。
清除 Istio¶
請參閱 解除安裝 Istio。
下一步¶
- 檢視 Knative Serving 文件。
- 嘗試一些 Knative Serving 程式碼範例。