[转]Kubernetes上的十大应用程序
在崭新的 Kubernetes 集群上,经常会安装的 helm chart 都有哪些呢?下面这个清单代表了我们的观点。
序号 | 名称 | 理由 |
---|---|---|
1 | nginx-ingress | 世界上最常见的前端代理,非常易于搭建,功能具有通用性。根据场景的不同,可能会有更好的 Ingress,但是它的份额占到了 99%。 |
2 | coredns | Kubernetes 上最好的 DNS 服务器。默认的 KubeDNS 比较糟糕,所以毫无疑问你需要将它切换掉。借助 coredns 你还可以启用一些很酷的插件,使其能够与其他的应用程序协作,比如 Prometheus。 |
3 | Prometheus | 每个人都应该使用 Prometheus,它提供了自定义的时序监控功能,允许你 instrument 代码并在 Grafana 中以图形化的方式进行监视。你还可以搭建告警功能,当生产环境崩溃或延迟让顾客感到不满时,你能得到提醒。它同时还需要 Grafana 和 kube-state-metrics chart。 |
4 | Istio | 通过 Istio 服务网格连接微服务能够解锁大量很酷的特性,包括流量控制、认证与授权、加密和可观察性。你可以移除微服务中大量的应用程序逻辑,让 Istio 来处理它。 |
5 | Nuclio | Nuclio 是我们目前最喜欢的 FaaS 应用,它为实时和数据驱动应用提供了 Serverless Function,与 AWS Lambda 的处理方式相同,只不过是在你的集群中运行。 |
6 | Jaeger | 为你的应用提供分布式跟踪功能,它能够跟踪每个微服务的每次 API 调用。我们都知道,微服务最大的问题就是可观察性。 |
7 | Fluentd | 捕获日志并将其发送至 ElasticSearch,这样我们就可以通过搜索错误日志判断微服务中出现了什么问题。在使用它的时候,还需要 Kibana chart。 |
8 | Anchore | 如今,谁的应用会不关注安全性呢。我们需要它来捕获安全漏洞并与 CI/CD 管道进行集成。 |
9 | Jenkins | 为容器提供 CI/CD 功能。几乎每个人都在运行它,不过喜欢它的人似乎并不多,但是它非常流行,在安装 Gitlab 之前,它是默认的方案。 |
10 | NATS | 一个非常酷的 PubSub 消息系统,因为并非所有的内部通信都需要通过 API,它还有一些很酷的流特性。 |
从众多应用出挑出最喜欢的 10 个着实困难。除了上述 10 个应用之外,还有一些非常棒的应用程序并没有能够包含进来。我们最终优先考虑的是核心功能的升级以及为开发人员所带来的帮助。下面还有其他一些 Kubernetes 上好用的应用:
Heptio Ark 是一个用来管理灾难恢复的工具,尤其适用于 Kubernetes 集群资源和持久化卷。
其实,没有人愿意编写备份和恢复脚本。我们推荐你了解一下这个应用,它可以为你解决这些问题。
可以说,Gitlab 比 Jenkins 更好,应该取代它出现在列表中。但是,我们不能忽视一个事实就是几乎每个人都在运行 Jenkins。
另外一个有争议性的就是在列表中排名第一的 nginx-ingress。很多人可能会说“我希望将 nginx 换成 Traefik 或 Ambassador”。
这次,我们站在了新人和流行度这一边。随着时间的推移,会有更多高级用户最终放弃 nginx-ingress,转而研究这两个可选方案。
我们在大多数集群上都运行 external-dns,它自动管理我们外部 DNS 记录的更新。
相对于列表中的其他条目,它并没有提供太多的功能,但有时候你可能还是需要安装它,以避免手动配置。
Magic Namespace 是用来管理 namespace 之间安全性的 helm chart。如果你运行多租户集群的话,毫无疑问你将会遇到这方面的问题。
每个人都喜欢用 chaos monkey。
但是我们不能一开始就告诉人们安装一个 chart,让它任意地杀死集群中的 pod。如果有人足够自信,能够忍受混沌过程的考验,那么 Chaoskube 就是为他们准备的。
这些仪表盘应用并没有包含在列表中。如果你喜欢使用漂亮的 UI 界面来展现集群状态的话,那么 kube-ops-view 非常棒。如果你更喜欢点击按钮的操作方式的话,那么 Kubernetes Dashboard 可能更适合你。
cert-manager 是一个 Kubernetes 应用程序,用于自动化管理和发布来自不同发行源的 TLS 证书。
如果你已经厌倦了围绕像 Let’sEncrypt 之类的服务创建自定义自动化功能,那么可以了解一下 cert manager。
这个有点悲剧色彩,Envoy 是非常棒的 edge 和服务代理,但是没有人会以 helm chart 的形式来使用它。它会打包到某个 chart 中,比如前十列表中的 Istio。我在这里将它列出来,也是某种程度上为它伸张正义。
Spinnaker 是非常流行的 CI/CD 平台,它是由 Netflix 开源的。它未能跻身前十,是因为它有些复杂。它需要不少规划工作才能搭建起来,此外,它是可配置的,很多内容都是围绕 Terraform 完成的。如果你的团队有不少人,应用非常复杂,需要一个强大的方案来替代通过各种 hacked 手段连接在一起的 Jenkins job 的话,那么可以了解一下 Spinnaker。
如果你要暴露 API 给外部世界的话(运行 Kubernetes 的场景下基本都会这样做),那么你应该了解一下 Kong,它是一个 API 网关,能够帮助我们管理很多标准的功能,比如认证、路由、日志等等。它还有一个插件系统,借助该系统能够为其扩展一些非常棒的特性。
[source]Kubernetes上的十大应用程序