This documentation is for a release that is no longer maintained
See documentation for the latest supported version 3 or the latest supported version 4.3.5. 配置 reporting-operator
				reporting-operator 负责从 Prometheus 中收集数据,存储指标数据至 Presto 中,对 Presto 运行报告查询,并通过 HTTP API 显示查询结果。配置 Operator 主要通过 MeteringConfig 文件进行。
			
3.5.1. Prometheus 连接 复制链接链接已复制到粘贴板!
在 OpenShift Container Platform 上安装 metering 时,使用 https://prometheus-k8s.openshift-monitoring.svc:9091/ 访问 Prometheus。
为保护与 Prometheus 的连接,默认 metering 安装使用 OpenShift Container Platform 的 CA。如果您的 Prometheus 实例使用了不同的 CA,则可通过 ConfigMap 来添加该 CA。请参见以下示例。
					另外,要使系统的 CA 可以支持公共的证书,请将 ServiceAccountCA 和 configMap.enabled 设置为 false。
				
					此外,还可将 reporting-operator 配置为使用一个指定的 token 令牌搭配 Prometheus 进行身份验证。请参见以下示例。
				
3.5.2. 公开 reporting API 复制链接链接已复制到粘贴板!
在 OpenShift Container Platform 中,默认 metering 安装会自动公开一个路由,以提供报告 API(reporting API)。它提供以下功能:
- 自动 DNS
 - 基于集群 CA 的自动 TLS
 
					此外,默认安装还支持利用 OpenShift 服务来提供证书,以通过 TLS 保护报告 API。OpenShift Oauth 代理被部署为 reporting-operator 的 side-car 容器,通过身份验证来保护报告 API。
				
3.5.2.1. 使用 OpenShift 身份验证 复制链接链接已复制到粘贴板!
						报告 API 默认通过 TLS 和身份验证进行保护。可通过配置 reporting-operator 以部署包含 reporting-operator 容器和运行 OpenShift auth-proxy 的 sidecar 容器的 Pod 来实现这一目的。
					
要访问报告 API,Metering Operator 会公开一个路由。路由安装好后,即可运行以下命令获取该路由的主机名。
METERING_ROUTE_HOSTNAME=$(oc -n openshift-metering get routes metering -o json | jq -r '.status.ingress[].host')
METERING_ROUTE_HOSTNAME=$(oc -n openshift-metering get routes metering -o json | jq -r '.status.ingress[].host')
下一步,设置身份验证,可使用服务帐户令牌验证,也可通过用户名/密码进行基础验证。
3.5.2.1.1. 使用服务帐户令牌进行身份验证 复制链接链接已复制到粘贴板!
要使用此法,您需要在报告 Operator 的服务账户中使用令牌,并将 bearer 令牌传输至以下命令中的身份验证标头中:
TOKEN=$(oc -n openshift-metering serviceaccounts get-token reporting-operator) curl -H "Authorization: Bearer $TOKEN" -k "https://$METERING_ROUTE_HOSTNAME/api/v1/reports/get?name=[Report Name]&namespace=openshift-metering&format=[Format]"
TOKEN=$(oc -n openshift-metering serviceaccounts get-token reporting-operator)
curl -H "Authorization: Bearer $TOKEN" -k "https://$METERING_ROUTE_HOSTNAME/api/v1/reports/get?name=[Report Name]&namespace=openshift-metering&format=[Format]"
							务必要替换上面 URL 中的 name=[Report Name] 和 format=[Format] 参数。format 参数可为 json 、csv 或 tabular。
						
3.5.2.1.2. 使用用户名和密码进行身份验证 复制链接链接已复制到粘贴板!
							我们可使用用户名和密码组合进行基础身份验证,用户名和密码已在 htpasswd 文件的内容中指定。在默认情况下,会创建一个包括空 htpasswd 数据的 secret。您可通过配置 reporting-operator.spec.authProxy.htpasswd.data 和 reporting-operator.spec.authProxy.htpasswd.createSecret 键来使用此法。
						
在 MeteringConfig 中指定了以上内容后,即可运行以下命令:
curl -u testuser:password123 -k "https://$METERING_ROUTE_HOSTNAME/api/v1/reports/get?name=[Report Name]&namespace=openshift-metering&format=[Format]"
curl -u testuser:password123 -k "https://$METERING_ROUTE_HOSTNAME/api/v1/reports/get?name=[Report Name]&namespace=openshift-metering&format=[Format]"
							务必将 testuser:password123 替换为有效的用户名和密码组合。
						
3.5.2.2. 手动配置身份验证 复制链接链接已复制到粘贴板!
						要手动配置身份验证,或在 report-operator 中禁用 OAuth,必须在 MeteringConfig 中设置 spec.tls.enabled: false。
					
							该设置同时还禁用 report-operator、presto 和 hive 之间的所有 TLS/身份验证。您需要自行手动配置这些资源。
						
						身份验证可通过配置以下选项来启用。启用身份验证会将 reporting-operator Pod 配置为将 OpenShift auth-proxy 作为 Pod 中的 sidecar 来运行。这样做会调整端口,以便 report-operator API 不会被直接公开,而是通过 auth-proxy sidecar 容器进行代理。
					
- reporting-operator.spec.authProxy.enabled
 - reporting-operator.spec.authProxy.cookie.createSecret
 - reporting-operator.spec.authProxy.cookie.seed
 
						您需要将 reporting-operator.spec.authProxy.enabled 和 reporting-operator.spec.authProxy.cookie.createSecret 设置为 true,将 reporting-operator.spec.authProxy.cookie.seed 设置为 32 个字符的随机字符串。
					
您可使用以下命令来生成 32 个字符的随机字符串。
openssl rand -base64 32 | head -c32; echo.
$ openssl rand -base64 32 | head -c32; echo.
3.5.2.2.1. 令牌身份验证 复制链接链接已复制到粘贴板!
							当以下选项被设置为 true 时,将针对报告 REST API 启用使用 bearer 令牌的身份验证。bearer 令牌可由服务账户或用户提供。
						
- reporting-operator.spec.authProxy.subjectAccessReview.enabled
 - reporting-operator.spec.authProxy.delegateURLs.enabled
 
							启用身份验证后,必须通过以下任一角色向用于查询该用户或 serviceAccount 报告 API 的 bearer 令牌授予访问权限:
						
- report-exporter
 - reporting-admin
 - reporting-viewer
 - metering-admin
 - metering-viewer
 
							metering-operator 可为您创建 RoleBindings,从而通过在 spec.permissions 部分指定主题列表来授予这些权限。例如,请参阅以下 advanced-auth.yaml 示例配置。
						
							另外,您还可使用任何具有授予 reports/export get 权限规则的角色。具体指 get reporting-operator 命名空间中报告资源的 export 子资源的访问权限。例如:admin 和 cluster-admin。
						
							reporting-operator 和 metering-operator serviceAccounts 默认均具有这些权限,其令牌可用于身份验证。
						
3.5.2.2.2. 基础身份验证(用户名/密码) 复制链接链接已复制到粘贴板!
							在进行基础身份验证时,您可在 reporting-operator.spec.authProxy.htpasswd.data 中提供用户名和密码。用户名和密码的格式必须与 htpasswd 文件中相同。设置完成后,即可使用 HTTP 基础身份验证来提供您的用户名和密码,htpasswdData 内容中具有该用户名和密码的对应条目。