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.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]"
务必将 testuser:password123
替换为有效的用户名和密码组合。