4.3.9. 로그 저장소 서비스를 경로로 노출

기본적으로 OpenShift Logging과 함께 배포된 로그 저장소는 로깅 클러스터 외부에서 액세스할 수 없습니다. 데이터에 액세스하는 도구의 로그 저장소 서비스에 대한 외부 액세스를 위해 재암호화 종료로 경로를 활성화할 수 있습니다.

외부에서는 재암호화 경로, OpenShift Container Platform 토큰 및 설치된 로그 저장소 CA 인증서를 생성하여 로그 저장소에 액세스할 수 있습니다. 그런 후 다음을 포함하는 cURL 요청으로 로그 저장소 서비스를 호스팅하는 노드에 액세스합니다.

내부에서는 다음 명령 중 하나로 얻을 수 있는 로그 저장소 클러스터 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

사전 요구 사항

  • OpenShift Logging 및 Elasticsearch가 설치되어 있어야 합니다.
  • 로그에 액세스하려면 프로젝트에 액세스할 수 있어야 합니다.

프로세스

로그 저장소를 외부에 노출하려면 다음을 수행합니다.

  1. openshift-loggin 프로젝트로 변경합니다.

    $ oc project openshift-logging
  2. 로그 저장소에서 CA 인증서를 추출하고 admin-ca 파일에 씁니다.

    $ oc extract secret/elasticsearch --to=. --keys=admin-ca

    출력 예

    admin-ca

  3. 로그 저장소 서비스의 경로를 YAML 파일로 생성합니다.

    1. 다음을 사용하여 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.certificatespec.tls.caCertificate 매개변수를 설정할 필요는 없습니다.
    2. 다음 명령을 실행하여 이전 단계에서 생성한 경로 YAML에 로그 저장소 CA 인증서를 추가합니다.

      $ cat ./admin-ca | sed -e "s/^/      /" >> <file-name>.yaml
    3. 경로를 생성합니다.

      $ oc create -f <file-name>.yaml

      출력 예

      route.route.openshift.io/elasticsearch created

  4. Elasticsearch 서비스가 노출되어 있는지 확인합니다.

    1. 요청에 사용할 이 서비스 계정의 토큰을 가져옵니다.

      $ token=$(oc whoami -t)
    2. 생성한 elasticsearch 경로를 환경 변수로 설정합니다.

      $ routeES=`oc get route elasticsearch -o jsonpath={.spec.host}`
    3. 경로가 성공적으로 생성되었는지 확인하려면 노출된 경로를 통해 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>"
      }