【问题标题】:Canary deployment with istio and ingress nginx使用 istio 和 ingress nginx 部署金丝雀
【发布时间】:2019-07-24 14:08:28
【问题描述】:

我有一个本地 Kubernetes 集群。在集群内部,我有两个应用程序:A 和 B。应用程序 A 通过带有 hostNetwork: true 的入口 nginx 暴露在外部。应用程序的域是 foo.example.com。应用程序 A 正在连接到应用程序 B,并且应用程序 B 未公开。

我希望能够通过 Canary 部署来部署应用程序 B。我的问题是如何使用 istio 和 ingress nginx 来实现我的目标?这可能吗?

我们将不胜感激任何建议。

下图展示了我想要达到的情况。

【问题讨论】:

  • 这听起来很像Istio documentation 中的示例。您是否有更具体的设置需要帮助?
  • (还请记住,您可以在没有 Istio 的情况下进行金丝雀部署,方法是部署与生产 pod 具有相同标签的金丝雀 pod,因此它附加到相同的服务,并处理 1/_n_ 的流量. 但是,您无法将流量显式路由到金丝雀,也无法直接控制金丝雀获得的流量。)

标签: kubernetes istio nginx-ingress


【解决方案1】:

您可以通过部署与不使用 Istio 的生产 pod 具有相同标签的金丝雀 pod 来执行金丝雀部署,因此它附加到相同的服务,并处理 1/n 的流量。您将不会有创建交通路线以及特定金丝雀获得多少交通的可能性。 在没有 Istio 的 Kubernetes 集群中,金丝雀 pod 的数量直接影响它们在任何给定时间点获得的流量。

关于 Canary 部署的有用博客:canary-deployment

要使用 Istio 进行 Canary 部署,请按照以下说明操作:istio-traffic-management

示例虚拟服务定义:

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: my-vtl-svc
spec:
  hosts:
  - "*.my-co.org"
  http:
  - route:
    - destination:
        host: my-svc
        subset: v1

在示例中,在规范下,hosts 列出了虚拟服务的主机。在这种情况下,主机是 *.my-co.org,其中 * 是通配符前缀,表示此虚拟服务处理任何以 .my-co.org 结尾的 DNS 名称的路由。

您可以使用任何 DNS 名称或内部网格服务名称来指定用户可寻址主机,只要该名称隐式或显式解析为一个或多个完全限定域名 (FQDN)。要指定多个主机,您可以使用通配符。

另外,请注意在 route 下指定路由规则的配置,destination 指定路由规则的目的地,host:my-svc 指定目的地的主机。如果您在 Kubernetes 上运行,则 my-svc 是 Kubernetes 服务的名称。

示例目标规则定义:

apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
  name: my-destination-rule
spec:
  host: my-svc
  trafficPolicy:
    loadBalancer:
      simple: RANDOM
  subsets:
  - name: v1
    labels:
      version: v1
  - name: v2
    labels:
      version: v2
    trafficPolicy:
      loadBalancer:
        simple: ROUND_ROBIN
  - name: v3
    labels:
      version: v3

您可以在单个目标规则中指定多个策略。在此示例中,在子集字段上方定义的默认策略为 v1 和 v3 子集设置了一个简单的随机负载均衡器。 v2 特定策略,即循环负载均衡器,在相应子集的字段中定义。

【讨论】:

    猜你喜欢
    • 2021-05-21
    • 2019-12-19
    • 1970-01-01
    • 2020-02-09
    • 2018-04-14
    • 2021-11-07
    • 2018-10-21
    • 1970-01-01
    • 2016-02-12
    相关资源
    最近更新 更多