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.4.3.9. 将日志存储服务公开为路由
默认情况下,无法从日志记录集群外部访问部署了 OpenShift Logging 的日志存储。您可以启用一个 re-encryption termination 模式的路由,以实现外部对日志存储服务的访问来获取数据。
另外,还可以在外部创建一个重新加密路由,使用 OpenShift Container Platform 令牌和已安装的 Elasticsearch CA 证书以从外部访问日志存储。然后,使用包含以下内容的 cURL 请求访问托管日志存储服务的节点:
-
Authorization: Bearer ${token}
- Elasticsearch 重新加密路由和 Elasticsearch API 请求。
在内部,可以使用日志存储集群 IP 访问日志存储服务。您可以使用以下命令之一获取它:
oc get service elasticsearch -o jsonpath={.spec.clusterIP} -n openshift-logging
$ oc get service elasticsearch -o jsonpath={.spec.clusterIP} -n openshift-logging
输出示例
172.30.183.229
172.30.183.229
oc get service elasticsearch -n openshift-logging
$ oc get service elasticsearch -n openshift-logging
输出示例
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE elasticsearch ClusterIP 172.30.183.229 <none> 9200/TCP 22h
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
elasticsearch ClusterIP 172.30.183.229 <none> 9200/TCP 22h
您可以使用类似如下的命令检查集群 IP 地址:
oc exec elasticsearch-cdm-oplnhinv-1-5746475887-fj2f8 -n openshift-logging -- curl -tlsv1.2 --insecure -H "Authorization: Bearer ${token}" "https://172.30.183.229:9200/_cat/health"
$ oc exec elasticsearch-cdm-oplnhinv-1-5746475887-fj2f8 -n openshift-logging -- curl -tlsv1.2 --insecure -H "Authorization: Bearer ${token}" "https://172.30.183.229:9200/_cat/health"
输出示例
% Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 29 100 29 0 0 108 0 --:--:-- --:--:-- --:--:-- 108
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 29 100 29 0 0 108 0 --:--:-- --:--:-- --:--:-- 108
先决条件
- 必须安装 OpenShift Logging 和 Elasticsearch。
- 您必须具有项目的访问权限,以便能访问其日志。
流程
对外部公开日志存储:
进入
openshift-logging
项目:oc project openshift-logging
$ oc project openshift-logging
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 从日志存储提取 CA 证书并写入 admin-ca 文件:
oc extract secret/elasticsearch --to=. --keys=admin-ca
$ oc extract secret/elasticsearch --to=. --keys=admin-ca
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
admin-ca
admin-ca
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以 YAML 文件形式创建日志存储服务的路由:
使用以下内容创建一个 YAML文件:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 添加日志存储 CA 证书或使用下一步中的命令。您不必设置一些重新加密路由所需的
spec.tls.key
、spec.tls.certificate
和spec.tls.caCertificate
参数。
运行以下命令,将日志存储 CA 证书添加到您在上一步中创建的路由 YAML 中:
cat ./admin-ca | sed -e "s/^/ /" >> <file-name>.yaml
$ cat ./admin-ca | sed -e "s/^/ /" >> <file-name>.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建路由:
oc create -f <file-name>.yaml
$ oc create -f <file-name>.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
route.route.openshift.io/elasticsearch created
route.route.openshift.io/elasticsearch created
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
检查是否公开了 Elasticsearch 服务:
获取此服务帐户的令牌,以便在请求中使用:
token=$(oc whoami -t)
$ token=$(oc whoami -t)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将您创建的 Elasticsearch 路由设置为环境变量。
routeES=`oc get route elasticsearch -o jsonpath={.spec.host}`
$ routeES=`oc get route elasticsearch -o jsonpath={.spec.host}`
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要验证路由是否创建成功,请运行以下命令来通过公开的路由访问 Elasticsearch:
curl -tlsv1.2 --insecure -H "Authorization: Bearer ${token}" "https://${routeES}"
curl -tlsv1.2 --insecure -H "Authorization: Bearer ${token}" "https://${routeES}"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 其响应类似于如下:
输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow