跳至内容

为 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 被注入到所有应该成为服务网格一部分的 pod 中。有两种方法可以实现这一点

  • 使用 自动 sidecar 注入 并在所有应该成为服务网格一部分的 namespace 上设置 istio-injection=enabled 标签

  • 使用 手动 sidecar 注入 在所有应该成为服务网格一部分的 pod 上设置

在 Knative 中使用 Istio mTLS 功能

由于 knative-serving 命名空间和您的服务在其上运行的命名空间之间存在一些网络通信,因此您需要为启用 mTLS 的环境进行额外的准备。

注意

强烈建议使用 自动 sidecar 注入 以避免手动将 sidecar 注入 knative-serving 中的所有 pod 中。

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

  1. 编辑 config-istio configmap

    kubectl edit configmap config-istio -n knative-serving
    
  2. 用自定义服务替换 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

下一步

我们使用分析和 Cookie 来了解网站流量。有关您使用我们网站的信息将与 Google 共享,用于该目的。 了解更多。