|
本文档采用自动化机器翻译技术翻译。 尽管我们力求提供准确的译文,但不对翻译内容的完整性、准确性或可靠性作出任何保证。 若出现任何内容不一致情况,请以原始 英文 版本为准,且原始英文版本为权威文本。 |
Prometheus Federator
Prometheus Federator,也称为项目监控 v2,部署了一个 Helm 项目操作器(基于 rancher/helm-project-operator),该操作器负责管理部署每个包含项目监控堆栈的 Helm Chart,每个堆栈包含:
-
Prometheus(由 Prometheus Operator 外部管理)
-
Alertmanager(由 Prometheus Operator 外部管理)
-
Grafana(通过嵌入的 Helm Chart 部署)
-
基于来自 kube-prometheus 的社区策划资源集合的默认 PrometheusRules 和 Grafana 仪表板
-
默认的 ServiceMonitors 监视已部署的资源
|
重要说明:
Prometheus Federator 旨在与已在集群中安装 Prometheus Operator CRDs 的现有 Prometheus Operator 部署一起部署。 |
操作器是如何工作的?
-
在部署此图表时,用户可以在 项目注册名称空间 (
cattle-project-<id>) 中创建 ProjectHelmCharts CR,spec.helmApiVersion设置为monitoring.cattle.io/v1alpha1(在 Rancher UI 中也称为“项目监视器”)。 -
在看到每个 ProjectHelmChartCR 时,操作器将自动代表项目所有者在 项目发布名称空间 (
cattle-project-<id>-monitoring) 中,基于 HelmChart CR 和由 ProjectHelmChart 控制器在 操作器 / 系统名称空间 中自动创建的 HelmRelease CR,部署一个项目 Prometheus 堆栈。 -
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/prometheus-federator下的 Helm Chart 定义charts/rancher-project-monitoring(Chart 版本将与此操作器的版本相关联)。 -
查找在每个项目注册名称空间中自动创建的名为
monitoring.cattle.io.v1alpha1的 ConfigMap,该 ConfigMap 将包含用于配置 Helm Chart 的values.yaml和questions.yaml(直接嵌入到prometheus-federator二进制文件中)。
名称空间
作为基于 rancher/helm-project-operator 的项目操作员,Prometheus Federator 关注三种不同分类的名称空间:
-
操作员 / 系统名称空间:操作员部署到的名称空间(例如,
cattle-monitoring-system)。此名称空间将包含此操作员监视的所有 ProjectHelmCharts 的所有 HelmCharts 和 HelmReleases。仅集群管理员应有权访问此名称空间。 -
项目注册名称空间 (
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,操作员 / 系统名称空间也将是项目注册名称空间。
-
-
项目发布名称空间 (
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 install、helm upgrade或helm 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 项目操作员配置
有关高级配置的更多信息,请参阅 此页面。