1

我有一个 Kubernetes 集群,有两个节点在运行。

我已经使用 argocd 来处理对我的微服务的任何更改(目前是一个微服务,但我将添加它)。

我的应用程序正在构建为掌舵图。因此,当我的 repo 更改时,我会更新我的 helm 图表,然后 argocd 看到 helm 图表有更改并将这些更改应用于集群。

我希望将 Istio 作为我的服务网格添加到我的集群中。使用 Istio 会有很多 yaml 配置文件。

我的问题是,如何让我的集群自动更新我的 istio 配置,例如当我的 helm chart 更改时 argocd 如何更新?

当然,我可以将 istio 配置文件放在 helm chart 中,但我的想法是:

  1. 我希望我的 istio 配置绑定到我的应用程序吗?
  2. 即使我确实做了#1,我并不反对,有许多 istio 配置将适用于集群范围,而不仅仅是我的一个微服务,而且这些绝对没有意义绑定到我的特定微服务, argo-cd 应用程序。那么我将如何处理自动更新集群范围的 istio 文件呢?

另一种选择可能是使用应用程序模式的 argocd 应用程序,但从我读过的内容来看,这似乎还没有得到最大的支持。

4

3 回答 3

2
  1. 在我看来,如果 Istio 组件(如VirtualServiceRequestAuthentication)“属于”应用程序,则应该将它们打包到应用程序中。如果它适合您的开发模型(即,没有单独的团队来管理这些问题),您甚至可以将它添加Gateways到应用程序中。Certificates使用 crossplane 之类的工具,您甚至可以在您的应用程序中包含数据库配置或其他基础设施。这样,应用程序是独立的,配置不会分布在多个地方。

  2. 您可以创建一个“基础设施”图表。这可以在自己的 Argo 应用程序中,甚至在您的应用程序之前部署(可能与部署 Argo CD 本身的阶段相同)

于 2021-09-12T07:53:56.397 回答
0

您是否考虑过使用 Istio 运算符来部署您的服务网格?

我今天已经用 ArgoCD 和“应用程序的应用程序”模式做到了这一点。Istio operator 是一个应用程序,我为部署 Istio 的控制平面(istiod 和网关)的自定义资源(种类:IstioOperator)创建了另一个应用程序。

如果您的服务网格配置发生更改,它应该通过该自定义资源发生。

于 2021-10-04T12:40:56.793 回答
0

这取决于如何选择安装 Istio。如果您使用Helm安装它,那么我相信您可以执行类似的操作,否则您将不得不创建一些自动化脚本以在istioctl每次更改配置时使用。

1. “我希望我的 istio 配置绑定到我的应用程序吗?”

你这是什么意思?有一个数据平面和一个控制平面。您有多种方法可以将 sidecar-proxy 附加到您的应用程序,还可以部署任何其他 CRD,例如 VirtualService、DestinationRule、PeerAuthentication Policy 等。

2. “即使我确实做了 #1,我并不反对,但仍有许多 istio 配置将应用于集群范围,而不仅仅是我的一个微服务,而且这些绝对没有意义与我的具体一个微服务,argo-cd 应用程序。那么我将如何处理自动更新集群范围的 istio 文件?

再说一次,你这是什么意思?每当您更新 Istio 控制平面时,数据平面代理将自动同步,并将使用 Envoy Hot-Restarts 重新加载新配置。如果您升级版本,那就是另一回事了,在这种情况下,您将不得不重新启动应用程序 pod 以获取新的更改。

于 2021-09-11T17:39:23.020 回答