4.5.2. 公开 reporting API

在 OpenShift Container Platform 中,默认 metering 安装会自动公开路由,以提供报告 API。它提供以下功能:

  • 自动 DNS
  • 基于集群 CA 的自动 TLS

此外,默认安装还支持利用 OpenShift 服务来提供证书,以通过 TLS 保护报告 API。OpenShift OAuth 代理被部署为 Reporting Operator 的 sidecar 容器,通过身份验证来保护报告 API。

4.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')

下一步,设置身份验证,可使用服务帐户令牌,也可通过用户名和密码进行基础身份验证。

4.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]"

务必要替换上面 URL 中的 name=[Report Name]format=[Format] 参数。format 参数可为 json 、csv 或 tabular。

4.5.2.1.2. 使用用户名和密码进行身份验证

Metering 支持使用用户名和密码组合配置基本身份验证,该组合在 htpasswd 文件的内容中指定。默认情况下,会创建一个包含空 htpasswd 数据的 secret。您可通过配置 reporting-operator.spec.authProxy.htpasswd.datareporting-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]"

务必将 testuser:password123 替换为有效的用户名和密码组合。