【问题标题】:Istio-pilot Consul SupportIstio-pilot 领事支持
【发布时间】:2020-03-10 17:57:29
【问题描述】:

我有点不清楚使用 Consul 适配器的 Istio-pilot 有什么要求。我正在尝试设置并让 istio-pilot Discovery 充当纯 Envoy xDS。但是,在使用 Consul 的一个示例中(来自 Istio src),它确实安装了一个 kube-apiserver(和 etcd)。我想使用 Envoy 作为数据平面(或 istio-pilot 代理),但利用 Consul 进行服务发现,而不是与 Kubernetes 集成。 istio-pilot 是否需要 K8 用于该用例?

【问题讨论】:

    标签: istio envoyproxy


    【解决方案1】:

    Istio 支持多种不同的所谓的 ServiceDiscovery 实现。 Kubernetes 就是其中之一,它从 Kubernetes 服务中发现服务。

    但这实际上只是运行 Istio Pilot 的一种可能方式,您可以通过命令行参数 --registries Consul 使用其他 ServiceDiscovery 机制 line Consul。 有关命令行参数的详细说明,请参阅https://archive.istio.io/v1.4/docs/reference/commands/pilot-discovery/

    一旦您使用该配置运行 Pilot,它应该仅从 Consul 加载服务。这些应该以通常的名称<service name>.service.consul 推送到数据平面。

    更新:

    从您下面的评论看来,您不仅不想从 Kubernetes 加载服务,而且通常在没有它的情况下完全运行。

    虽然这在 1.4 中似乎确实不可能 - 即始终启动监视 Istio 资源 - 但它似乎适用于 1.5。

    为了实现这一点,您可以使用 --disable-install-crds--configDir <config path> 开始试点,其中 &lt;config path&gt; 指向一个目录,其中包含您可能仍需要的 Istio 特定资源的 yaml,例如 Sidecars、MeshPolicy、EnvoyFilter 等。 如果没有定义--configDir,Pilot 仍然会尝试从 Kubernetes 获取这些资源,因此即使目录为空,也必须添加此参数。

    最后,您应该确保通过 --meshConfig meshconfig.yaml 传递给 Pilot 的 MeshConfig 不会通过将其注释掉来指向厨房的 URL,以防您从正在运行的 Pilot 实例复制了现有文件 /etc/istio/config/mesh

    configSources:
    #- address: istio-galley.istio-system.svc:9901
    #  tlsSettings:
    #    mode: ISTIO_MUTUAL
    

    【讨论】:

    • 是的,这就是我正在做的事情,它确实会联系 Consul 并从目录中获取服务。但是,我仍然看到一堆尝试同步 Kubernetes 控制器,淹没日志。我也使用--disable-install-crds,它运行良好,因为它不会尝试安装它,但我无法停止同步。查看github.com/istio/istio/blob/master/install/consul/templates/… 示例安装kube-apiserver 和我的测试,我可以假设您可以使用替代服务发现,它确实需要Kubernetes apiserver 才能使其正常工作。
    猜你喜欢
    • 2021-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-30
    • 2022-11-03
    • 2018-07-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多