跳到内容

为 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.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

  1. knative-serving 系统命名空间上启用 sidecar 注入。

    kubectl label namespace knative-serving istio-injection=enabled
    
  2. 通过使用以下模板创建 YAML 文件,将 knative-serving 系统命名空间上的 PeerAuthentication 设置为 PERMISSIVE

    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 命名空间下的 config-istio 网关 configmap。

  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

请参阅 卸载 Istio

下一步

我们使用分析和 cookie 来了解网站流量。有关您使用我们网站的信息会与 Google 共享以达到此目的。了解更多。