用于 Pub-Sub 模型应用程序的 Kubernetes Operator 与 Helm

Kubernetes Operator Vs Helm for Pub-Sub Model application

我有一个使用 C# 编写的发布者订阅者(Pub-Sub 模型)应用程序,我想将其托管在 Kubernetes 上以实现高可用性。使用 helm 好还是我应该在我的应用程序中使用运算符。 什么最适合 Pub-Sub 模型应用程序?

如果你有一个(dockerized)应用程序并且你想 运行 它在 Kubernetes 中,那么 create Kubernetes Deployment configuration.

就足够了

因此,您可以做的最简单的事情就是创建一个包含以下内容的文件deployment.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-deployment
  labels:
    app: my-app
spec:
  replicas: 3
  selector:
    matchLabels:
      app: my-app
  template:
    metadata:
      labels:
        app: my-app
    spec:
      containers:
      - name: my-app
        image: <your-docker-image>

然后使用以下命令将其部署到 Kubernetes 中。

kubectl apply -f deployment.yaml

关于HelmOperators,大家一般会用到一些比较复杂的部署,组织和模板化多个Kubernetes配置,进行交互与您的应用程序一起执行备份和更多操作任务。

如前一个答案所述,简单部署就足以让您在 Kubernetes 中启动应用程序。

helm 的想法是通过模板获得可重用的 yaml 工件。因此,它允许您定义具有某些属性的 Kubernetes yaml 文件。这些属性的值存储在单独的文件中。 helm 的大多数用例是为具有不同配置的相同应用程序工作负载创建自定义 yaml,或者在不同环境中安排这些部署。

另一方面,Kubernetes Operator 是一个特定于应用程序的控制器,它扩展了 Kubernetes API 的功能,以代表 Kubernetes 用户创建、配置和管理复杂应用程序的实例。它建立在基本的 Kubernetes 资源和控制器概念之上,但包括领域或特定于应用程序的知识,以自动化其管理的软件的整个生命周期。

因此,如果您的应用程序需要一些特殊要求,您可能希望对创建自定义运算符更感兴趣。

总而言之,helm 是 Kubernetes 的一种包管理器,其中 Kubernetes operator 是管理特定 kubernetes 生命周期的控制器 resource/application/software/

这是一个很好的 article 两者有何不同以及它们的共同点。