3.3.9. 로그 저장소 서비스를 경로로 노출
기본적으로 클러스터 로깅과 함께 배포된 로그 저장소는 로깅 클러스터 외부에서 액세스할 수 없습니다. 데이터에 액세스하는 도구의 로그 저장소 서비스에 대한 외부 액세스를 위해 재암호화 종료로 경로를 활성화할 수 있습니다.
외부에서는 재암호화 경로, OpenShift Container Platform 토큰 및 설치된 로그 저장소 CA 인증서를 생성하여 로그 저장소에 액세스할 수 있습니다. 그런 후 다음을 포함하는 cURL 요청으로 로그 저장소 서비스를 호스팅하는 노드에 액세스합니다.
-
인증: 전달자 ${token}
- Elasticsearch 재암호화 경로 및 Elasticsearch API 요청
내부에서는 다음 명령 중 하나로 얻을 수 있는 로그 저장소 클러스터 IP를 사용하여 로그 저장소 서비스에 액세스할 수 있습니다.
$ oc get service elasticsearch -o jsonpath={.spec.clusterIP} -n openshift-logging
출력 예
172.30.183.229
$ 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
다음과 유사한 명령을 사용하여 클러스터 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"
출력 예
% Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 29 100 29 0 0 108 0 --:--:-- --:--:-- --:--:-- 108
사전 요구 사항
- 클러스터 로깅 및 Elasticsearch가 설치되어 있어야 합니다.
- 로그에 액세스하려면 프로젝트에 액세스할 수 있어야 합니다.
프로세스
로그 저장소를 외부에 노출하려면 다음을 수행합니다.
openshift-loggin
프로젝트로 변경합니다.$ oc project openshift-logging
로그 저장소에서 CA 인증서를 추출하고 admin-ca 파일에 씁니다.
$ oc extract secret/elasticsearch --to=. --keys=admin-ca
출력 예
admin-ca
로그 저장소 서비스의 경로를 YAML 파일로 생성합니다.
다음을 사용하여 YAML 파일을 생성합니다.
apiVersion: route.openshift.io/v1 kind: Route metadata: name: elasticsearch namespace: openshift-logging spec: host: to: kind: Service name: elasticsearch tls: termination: reencrypt destinationCACertificate: | 1
- 1
- 로그 저장소 CA 인증서를 추가하거나 다음 단계에서 명령을 사용합니다. 일부 재암호화 경로에 필요한
spec.tls.key
,spec.tls.certificate
및spec.tls.caCertificate
매개변수를 설정할 필요는 없습니다.
다음 명령을 실행하여 이전 단계에서 생성한 경로 YAML에 로그 저장소 CA 인증서를 추가합니다.
$ cat ./admin-ca | sed -e "s/^/ /" >> <file-name>.yaml
경로를 생성합니다.
$ oc create -f <file-name>.yaml
출력 예
route.route.openshift.io/elasticsearch created
Elasticsearch 서비스가 노출되어 있는지 확인합니다.
요청에 사용할 이 서비스 계정의 토큰을 가져옵니다.
$ token=$(oc whoami -t)
생성한 elasticsearch 경로를 환경 변수로 설정합니다.
$ routeES=`oc get route elasticsearch -o jsonpath={.spec.host}`
경로가 성공적으로 생성되었는지 확인하려면 노출된 경로를 통해 Elasticsearch에 액세스하는 다음 명령을 실행합니다.
curl -tlsv1.2 --insecure -H "Authorization: Bearer ${token}" "https://${routeES}"
응답은 다음과 유사하게 나타납니다.
출력 예
{ "name" : "elasticsearch-cdm-i40ktba0-1", "cluster_name" : "elasticsearch", "cluster_uuid" : "0eY-tJzcR3KOdpgeMJo-MQ", "version" : { "number" : "6.8.1", "build_flavor" : "oss", "build_type" : "zip", "build_hash" : "Unknown", "build_date" : "Unknown", "build_snapshot" : true, "lucene_version" : "7.7.0", "minimum_wire_compatibility_version" : "5.6.0", "minimum_index_compatibility_version" : "5.0.0" }, "<tagline>" : "<for search>" }