为 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 被注入到所有应该成为服务网格一部分的 pod
中。有两种方法可以实现这一点
-
使用 自动 sidecar 注入 并在所有应该成为服务网格一部分的
namespace
上设置istio-injection=enabled
标签 -
使用 手动 sidecar 注入 在所有应该成为服务网格一部分的
pod
上设置
在 Knative 中使用 Istio mTLS 功能¶
由于 knative-serving 命名空间和您的服务在其上运行的命名空间之间存在一些网络通信,因此您需要为启用 mTLS 的环境进行额外的准备。
注意
强烈建议使用 自动 sidecar 注入 以避免手动将 sidecar 注入 knative-serving
中的所有 pod
中。
-
在
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
命名空间下的网关 configmap config-istio
。
-
编辑
config-istio
configmapkubectl edit configmap config-istio -n knative-serving
-
用自定义服务替换
local-gateways
字段。例如,如果您将istio-system
命名空间下的服务和部署都命名为custom-local-gateway
,则应将其更新为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 代码示例。