为 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.21.0/net-istio.yaml提示
请确保同时安装 Knative Serving 并 配置 DNS。
构建服务网格¶
Istio 服务网格提供了一些好处:
-
允许您启用 双向 TLS (mTLS),以保护集群内的服务间通信。
-
允许您使用 Istio 授权策略,根据 Istio 服务角色控制对每个 Knative 服务的访问。
如果您想将 Istio 用作服务网格,您必须确保将 Istio sidecar 注入到所有应该属于服务网格一部分的 pods 中。有两种方法可以实现这一点:
-
使用 自动 sidecar 注入,并在所有应该属于服务网格一部分的
namespaces上设置istio-injection=enabled标签。 -
对所有应该属于服务网格一部分的
pods使用 手动 sidecar 注入。
将 Istio mTLS 功能与 Knative 结合使用¶
由于 knative-serving 命名空间与您的服务运行所在的命名空间之间存在一些网络通信,因此您需要在启用 mTLS 的环境中进行额外准备。
注意
强烈建议使用 自动 sidecar 注入,以避免手动将 sidecar 注入到 knative-serving 中的所有 pods。
-
在
knative-serving系统命名空间上启用 sidecar 注入。kubectl label namespace knative-serving istio-injection=enabled -
通过使用以下模板创建 YAML 文件,将 knative-serving 系统命名空间上的
PeerAuthentication设置为PERMISSIVE。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 命名空间下的 config-istio 网关 configmap。
-
编辑
config-istioconfigmap。kubectl 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 安装指南,请参阅 Istio Kubernetes 入门指南。
-
有关使用
istioctl安装 Istio 时可用配置的完整列表,请参阅 Istio 安装选项参考。
清理 Istio¶
请参阅 卸载 Istio。
下一步¶
- 查看 Knative Serving 文档。
- 尝试一些 Knative Serving 代码示例。