本文档采用自动化机器翻译技术翻译。 尽管我们力求提供准确的译文,但不对翻译内容的完整性、准确性或可靠性作出任何保证。 若出现任何内容不一致情况,请以原始 英文 版本为准,且原始英文版本为权威文本。

Prometheus Federator

Prometheus Federator,也称为项目监控 v2,部署了一个 Helm 项目操作器(基于 rancher/helm-project-operator),该操作器负责管理部署每个包含项目监控堆栈的 Helm Chart,每个堆栈包含:

重要说明:

Prometheus Federator 旨在与已在集群中安装 Prometheus Operator CRDs 的现有 Prometheus Operator 部署一起部署。

操作器是如何工作的?

  1. 在部署此图表时,用户可以在 项目注册名称空间 (cattle-project-<id>) 中创建 ProjectHelmCharts CR,spec.helmApiVersion 设置为 monitoring.cattle.io/v1alpha1(在 Rancher UI 中也称为“项目监视器”)。

  2. 在看到每个 ProjectHelmChartCR 时,操作器将自动代表项目所有者在 项目发布名称空间 (cattle-project-<id>-monitoring) 中,基于 HelmChart CR 和由 ProjectHelmChart 控制器在 操作器 / 系统名称空间 中自动创建的 HelmRelease CR,部署一个项目 Prometheus 堆栈。

  3. RBAC 将在项目发布名称空间中自动分配,以允许用户查看已部署的项目监控堆栈的 Prometheus、Alertmanager 和 Grafana UI;这将基于在项目注册名称空间中针对 默认 Kubernetes 用户角色 定义的 RBAC。有关更多信息,请参见 配置 RBAC 部分。

什么是项目?

在 Prometheus Federator 中,项目是一组可以通过 metav1.LabelSelector 识别的名称空间。默认情况下,用于识别项目的标签是 field.cattle.io/projectId,用于识别包含在给定 Rancher 项目中的名称空间的标签。

配置由 ProjectHelmChart 创建的 Helm Release

此 ProjectHelmChart 资源的 spec.values 将对应于将提供给操作器代表用户部署的基础 Helm Chart 的 values.yaml 覆盖;要查看基础 Chart 的 values.yaml 规范,可以:

名称空间

作为基于 rancher/helm-project-operator 的项目操作员,Prometheus Federator 关注三种不同分类的名称空间:

  1. 操作员 / 系统名称空间:操作员部署到的名称空间(例如,cattle-monitoring-system)。此名称空间将包含此操作员监视的所有 ProjectHelmCharts 的所有 HelmCharts 和 HelmReleases。仅集群管理员应有权访问此名称空间。

  2. 项目注册名称空间 (cattle-project-<id>):操作员监视的 ProjectHelmCharts 的名称空间集合。适用于此名称空间的 RoleBindings 和 ClusterRoleBindings 也将成为在项目发布名称空间中自动分配的 RBAC 的真实来源。有关细节,请参见 RBAC 页面项目所有者(管理员)、项目成员(编辑)和只读成员(查看)应有权访问此名称空间。

    备注:
    • 如果提供了 .Values.global.cattle.projectLabel,项目注册名称空间将由操作员自动生成并导入到其关联的项目中,默认设置为 field.cattle.io/projectId。这表明如果观察到至少一个带有该标签的名称空间,操作员应创建一个项目注册名称空间。除非所有带有该标签的名称空间都已删除(例如,这是该项目中的最后一个名称空间,在这种情况下,该名称空间将标记为标签 "helm.cattle.io/helm-project-operator-orphaned": "true",表示可以删除),否则操作员将不允许删除这些名称空间,或者因为在 .Values.helmProjectOperator.otherSystemProjectLabelValues 下提供了项目 ID,操作员不再监视该项目,该项目 ID 作为项目的拒绝列表。这些名称空间也绝不会被自动删除,以避免破坏用户数据;建议用户在创建或删除项目时手动清理这些名称空间。

    • 如果未提供 .Values.global.cattle.projectLabel,操作员 / 系统名称空间也将是项目注册名称空间。

  3. 项目发布名称空间 (cattle-project-<id>-monitoring):*操作员代表 ProjectHelmChart 部署项目监控堆栈的名称空间集合;操作员还将根据在项目注册名称空间中找到的绑定,自动将 RBAC 分配给在此名称空间中创建的角色。*仅集群管理员应有权访问此名称空间;项目所有者(管理员)、项目成员(编辑)和只读成员(查看)将通过部署的 Helm Chart 和 Prometheus Federator 被分配有限的访问权限。

    备注:
    • 项目发布名称空间在指定的 .Values.helmProjectOperator.projectReleaseNamespaces.labelValue 下自动部署并导入到项目中,如果未指定,则默认为 .Values.global.cattle.systemProjectId 的值,每当在项目注册名称空间中指定 ProjectHelmChart 时。

    • 项目发布名称空间遵循与项目注册名称空间相同的孤立约定(见上面的说明)。

    • 如果`.Values.projectReleaseNamespaces.enabled`为假,项目发布名称空间将与项目注册名称空间相同。

Helm 资源(HelmChart,HelmRelease)

在部署 ProjectHelmChart 时,Prometheus Federator 将自动创建和管理两个子自定义资源,这些资源依次管理底层 Helm 资源:

  • 一个 HelmChart CR(通过嵌入的 k3s-io/helm-contoller在操作员中管理):此自定义资源会在相同的名称空间中自动创建一个作业,该作业根据应用于 HelmChart CR 的更改触发 helm installhelm upgradehelm uninstall。此 CR 会在 ProjectHelmChart(例如,修改 values.yaml)或底层项目定义(例如,向项目添加或移除名称空间)发生更改时自动更新。

重要说明:

如果由于某种原因 ProjectHelmChart 未能部署或更新底层项目监控堆栈,则在操作员/系统名称空间中由此资源创建的作业应是您检查 Helm 操作是否存在问题的首个地方。然而,这通常仅可由*集群管理员*访问。

  • 一个 HelmRelease CR(通过嵌入的 rancher/helm-locker在操作员中管理):此自定义资源会自动锁定已部署的 Helm 发布,并自动覆盖对底层资源的更新,除非更改是通过 Helm 操作(由 HelmChart CR 执行的`helm install`、helm upgrade`或`helm uninstall)进行的。

HelmRelease CR 会发出 Kubernetes 事件,以检测底层 Helm 发布何时被修改并将其锁定回原位。要查看这些事件,您可以使用`kubectl describe helmrelease <helm-release-name> -n <operator/system-namespace>`;您还可以查看此操作员的日志,以查看何时检测到更改以及尝试对哪些资源进行修改。

这两个资源都是为操作员/系统名称空间中的所有 Helm 图表创建的,以避免将特权提升到权限不足的用户。

高级 Helm 项目操作员配置

有关高级配置的更多信息,请参阅 此页面

本地群集上的 Prometheus Federator

Prometheus Federator 是一个资源密集型应用程序。将其安装到本地群集是可能的,但*不推荐*。