Kubernetes의 Elastic Cloud에서 Google Cloud의 Elastic Cloud로 배포 및 마이그레이션

Last reviewed 2021-01-15 UTC

이 가이드에서는 다양한 환경에서 Elastic Stack 플랫폼을 설정하는 방법과 Kubernetes의 Elastic Cloud(ECK)에서 Google Cloud의 Elastic Cloud로의 기본적인 데이터 마이그레이션을 수행하는 방법을 설명합니다.

조직이 Google Cloud로 이전하면 마이그레이션 전략이 중요해집니다. 다른 클라우드 환경에서 이전하든 온프레미스 환경에서 이전하든 상관없이 비즈니스 프로세스가 최대한 중단 없이 계속 실행되도록 해야 합니다. 분석 데이터를 처리, 저장, 제공하는 데이터 플랫폼은 비즈니스 및 애플리케이션 인프라의 운영 방식에 대한 유용한 정보를 제공합니다. 많은 조직에서 Elastic Stack은 이러한 유용한 정보를 제공하는 핵심 구성요소입니다.

이 가이드는 시스템 및 애플리케이션을 Google Cloud로 마이그레이션하는 데 필요한 데이터 및 엔터프라이즈 아키텍트 및 시스템 관리자를 대상으로 합니다. 이 가이드에서는 Google Cloud의 다양한 환경에서 Elastic Stack을 인스턴스화하는 경험을 제공합니다.

이 튜토리얼은 ECK 버전 1.0.1에서 개발 및 테스트되었습니다.

주요 구성요소

이 가이드에서는 다음 기술을 사용합니다.

  • Elastic Stack은 다음과 같은 주요 구성요소로 이루어진 플랫폼입니다.
    • Elasticsearch: 수평 확장성, 최대의 안정성, 간소화된 관리를 위해 설계된 분산형 JSON 기반 검색 및 분석 엔진
    • Kibana: 데이터를 체계화하며 Elastic Stack의 모든 측면을 구성하고 관리할 수 있는 확장 가능한 사용자 인터페이스
    • Beats: 에지 머신에서 Logstash 및 Elasticsearch로 데이터를 전송하는 경량 전송 시스템
    • Logstash: 확장 가능한 플러그인 생태계 및 강력한 Elasticsearch 시너지를 갖춘 동적 데이터 수집 파이프라인
  • Elastic Cloud: Google Cloud에서 실행할 수 있는 호스팅 및 관리형 Elasticsearch 및 Kibana 서비스
  • ECK: Kubernetes에서 Elasticsearch, Kibana, APM Server의 설정 및 관리를 지원하는 기본 Kubernetes 조정 기능을 확장
  • Google Kubernetes Engine(GKE): Google 인프라를 사용하여 컨테이너화된 애플리케이션을 배포, 관리, 확장할 수 있는 관리형 환경을 제공. GKE 환경은 그룹화되어 클러스터를 형성하는 여러 머신(Compute Engine 인스턴스)으로 구성됩니다.

목표

  • GKE에 ECK를 배포합니다.
  • ECK 클러스터에 샘플 데이터를 로드합니다.
  • Elastic Cloud를 배포합니다.
  • 데이터의 스냅샷을 만들어 Cloud Storage에 로드합니다.
  • 저장된 스냅샷으로 ECK 인스턴스를 복원합니다.

비용

이 문서에서는 비용이 청구될 수 있는 다음과 같은 Google Cloud 구성요소를 사용합니다.

프로젝트 사용량을 기준으로 예상 비용을 산출하려면 가격 계산기를 사용하세요. Google Cloud를 처음 사용하는 사용자는 무료 체험판을 사용할 수 있습니다.

이 문서에 설명된 태스크를 완료했으면 만든 리소스를 삭제하여 청구가 계속되는 것을 방지할 수 있습니다. 자세한 내용은 삭제를 참조하세요.

시작하기 전에

  1. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  2. Make sure that billing is enabled for your Google Cloud project.

  3. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

  4. Cloud Shell에서 Compute Engine 및 GKE API를 사용 설정합니다.

    gcloud services enable compute.googleapis.com \
        container.googleapis.com
    

    이러한 API는 이 가이드에 필요한 GKE 리소스를 배포하는 데 필요한 컴퓨팅 리소스를 프로비저닝하는 데 사용됩니다. 이 프로세스는 몇 분 정도 걸릴 수 있습니다. 완료되면 계속 진행할 수 있습니다.

  5. 데이터베이스와 컴퓨팅 리소스를 배포할 기본 컴퓨팅 영역을 설정합니다.

    gcloud config set compute/zone us-central1-a
    export COMPUTE_ZONE=us-central1-a
    

    이 가이드에서는 영역에 us-central1-a를 사용합니다. 또한 원하는 영역에 배포할 수 있습니다. 자세한 내용은 지역 및 리전을 참조하세요.

GKE 클러스터에 ECK 배포

다음 섹션에서는 Google Cloud에서 Elastic Cloud를 실행하는 데 필요한 인프라와 소프트웨어를 설정합니다.

GKE 클러스터를 만들고 관리하기 위한 서비스 계정 프로비저닝

이 섹션에서는 이 가이드에서 GKE 클러스터를 만들고 관리하는 데 사용할 서비스 계정을 만듭니다. 클러스터는 기본적으로 기본 Compute Engine 서비스 계정을 상속받는 Compute Engine의 가상 머신(VM) 인스턴스입니다. 이 서비스 계정에는 가이드에서 필요한 것보다 많은 권한이 있습니다. 서비스 계정을 만들 때 최소 권한의 원칙을 따르는 것이 좋습니다.

다음 단계에서는 서비스 계정에 모니터링 뷰어(roles/monitoring.viewer), 모니터링 측정항목 작성자(roles/monitoring.metricWriter), 로그 작성자(roles/logging.logWriter) IAM 역할을 부여합니다. 또한 서비스 계정에 Compute 관리자 역할(roles/compute.admin)을 부여합니다. 이 역할은 모든 Compute Engine 리소스의 전체 권한을 제공합니다. 가이드에는 이 역할이 필요하지 않습니다. 하지만 이 서비스 계정을 계속 클러스터에서 사용하고 컴퓨팅 노드를 추가해야 하는 경우에는 Compute 관리자 역할을 통해 추가 컴퓨팅 리소스를 프로비저닝할 수 있습니다.

  1. Cloud Shell에서 Google Cloud 프로젝트 ID를 변수로 설정하고 서비스 계정 이름을 설정합니다.

    export PROJECT_ID=$(gcloud config get-value project 2> /dev/null)
    export SA_ID=eck-sa
    
  2. 서비스 계정의 이메일 주소로 서비스 계정과 새 변수를 만듭니다.

    gcloud iam service-accounts create $SA_ID --display-name=$SA_ID
    export GKE_SA_EMAIL=$(gcloud iam service-accounts list \
        --filter=displayName:"$SA_ID" --format='value(email)')
    

    메타데이터가 동기화되는 데 다소 시간이 걸릴 수 있습니다. 동기화되면 이메일 주소가 변수에 표시됩니다. 그때까지는 변수가 비어 있습니다.

  3. 로컬 환경 변수가 서비스 계정 ID로 설정되었는지 확인합니다.

    echo $GKE_SA_EMAIL
    

    출력이 비어 있으면 변수가 입력될 때까지 이전 export 명령어를 다시 실행합니다. 환경 변수가 설정된 경우 이메일 주소처럼 보이는 서비스 계정 ID가 표시됩니다.

  4. 메타데이터가 동기화되면 서비스 계정에 정책 binding을 연결합니다.

    gcloud projects add-iam-policy-binding $PROJECT_ID --member serviceAccount:$GKE_SA_EMAIL --role roles/logging.logWriter
    gcloud projects add-iam-policy-binding $PROJECT_ID --member serviceAccount:$GKE_SA_EMAIL --role roles/monitoring.metricWriter
    gcloud projects add-iam-policy-binding $PROJECT_ID --member serviceAccount:$GKE_SA_EMAIL --role roles/monitoring.viewer
    gcloud projects add-iam-policy-binding $PROJECT_ID --member serviceAccount:$GKE_SA_EMAIL --role roles/storage.admin
    gcloud projects add-iam-policy-binding $PROJECT_ID --member serviceAccount:$GKE_SA_EMAIL --role roles/compute.admin
    

GKE 클러스터 만들기

다음 단계는 클러스터를 배포하는 것입니다. 다음 명령어는 256GB 영구 디스크(SSD)가 있는 n1-standard-4 머신 유형을 사용하여 3노드 클러스터를 만듭니다. 이러한 리소스를 변경할 수 있습니다.

  1. Cloud Shell에서 클러스터를 배포합니다.

    gcloud container clusters create "eck-tutorial" \
        --project $PROJECT_ID --zone $COMPUTE_ZONE \
        --service-account $GKE_SA_EMAIL \
        --no-enable-basic-auth --machine-type "n1-standard-4" \
        --image-type "COS" --disk-type "pd-standard" \
        --disk-size "256" --metadata disable-legacy-endpoints=true \
        --num-nodes "3" \
        --enable-ip-alias --no-issue-client-certificate
    
  2. kubectl이 새 클러스터와 상호작용할 수 있도록 사용자 인증 정보를 가져옵니다.

    gcloud container clusters get-credentials eck-tutorial
    

ECK 시작하기

다음 단계에서는 ECK가 프로비저닝된 인프라에서 실행되도록 설정합니다.

Elasticsearch Operator 배포

Kubernetes Operator 패턴은 Kubernetes의 커스텀 리소스를 허용합니다. Elasticsearch Operator는 이 패턴을 사용하여 Kubernetes에 Elastic Stack의 구성요소를 배포합니다.

  1. Cloud Shell에서 커스텀 리소스 정의(CRD)를 설치합니다.

    kubectl apply -f https://download.elastic.co/downloads/eck/1.0.1/all-in-one.yaml
    
  2. (선택사항) 연산자 로그를 모니터링합니다.

    watch kubectl -n elastic-system logs -f statefulset.apps/elastic-operator
    

    일반적으로 ECK는 CRD를 설치한 후 1분 이내에 준비됩니다.

Cloud Storage에 액세스하기 위한 보안 비밀 생성

다음 단계는 새 Elasticsearch 클러스터가 Cloud Storage 버킷에 스냅샷을 읽고 쓸 수 있도록 설정하는 것입니다.

  1. Cloud Shell에서 서비스 계정 키와 Kubernetes 보안 비밀을 생성합니다.

    gcloud iam service-accounts keys create ~/gcs.client.default.credentials_file \
        --iam-account=$GKE_SA_EMAIL
    
    kubectl create secret generic gcs-credentials \
        --from-file=gcs.client.default.credentials_file
    
  2. 스냅샷에 사용할 Cloud Storage 버킷을 만들고 버킷 이름을 표시합니다.

    export GCSBUCKET=$RANDOM-eck-gcs-snapshot && gsutil mb gs://$GCSBUCKET
    

    이후 단계에서 버킷 이름이 필요하므로 버킷 이름을 복사합니다.

Elastic Stack 배포

  1. Cloud Shell에서 Elasticsearch, Kibana, APM Server의 서버를 클러스터에 배포하는 샘플 클러스터 사양을 적용합니다.

    cat << 'EOF' > ~/eck.yaml
    apiVersion: elasticsearch.k8s.elastic.co/v1
    kind: Elasticsearch
    metadata:
      name: quickstart
    spec:
      version: 7.6.1
      secureSettings:
      - secretName: gcs-credentials
      nodeSets:
      - name: default
        count: 3
        config:
          node.master: true
          node.data: true
          node.ingest: true
          node.store.allow_mmap: false
        podTemplate:
          spec:
            initContainers:
            - name: install-plugins
              command:
              - sh
              - -c
              - |
                bin/elasticsearch-plugin install --batch repository-gcs
    ---
    apiVersion: kibana.k8s.elastic.co/v1
    kind: Kibana
    metadata:
      name: kibana-sample
    spec:
      version: 7.6.1
      count: 1
      elasticsearchRef:
        name: quickstart
    ---
    apiVersion: apm.k8s.elastic.co/v1
    kind: ApmServer
    metadata:
      name: apm-server-sample
    spec:
      version: 7.6.1
      count: 1
      elasticsearchRef:
        name: quickstart
    EOF
    
    kubectl apply -f eck.yaml
    
  2. (선택사항) 배포 상태를 확인합니다.

    watch kubectl get elasticsearch,kibana,apmserver
    

    세 가지 서비스의 상태 표시기가 녹색이면 클러스터가 실행 중인 것입니다.

부하 분산기를 만들고 Kibana에 로그인

기본적으로 클러스터의 서비스에는 내부 IP 주소만 있으며 공개 인터넷을 통해 액세스할 수 없습니다. kubectl get services 명령어를 실행하면 모든 서비스에 내부 IP 주소가 있고 외부 IP 주소가 없는 것을 확인할 수 있습니다. 웹브라우저를 통해 Kibana에 연결하려면 각각 장단점이 있는 여러 가지 방법으로 애플리케이션을 노출해야 합니다. 이 가이드에서는 부하 분산기를 만듭니다.

  1. Cloud Shell에서 부하 분산기를 만듭니다.

    kubectl expose deployment kibana-sample-kb \
        --type=LoadBalancer \
        --port 5601 \
        --target-port 5601
    

    이 부하 분산기는 Kibana 서비스의 기본 포트인 포트 5601에서 요청을 받습니다.

  2. kibana-sample-kb라는 새 부하 분산기 서비스를 확인합니다.

    watch kubectl get services
    

    외부 IP 주소가 프로비저닝될 때까지 기다립니다.

  3. 주소가 나타나면 URL을 EXTERNAL_IP 변수에 복사한 다음 전체 URL을 브라우저에 붙여넣어 Kibana 포털을 로드합니다.

    https://EXTERNAL_IP:5601

    Chrome을 사용하는 경우 고급을 클릭한 후 무시하고 계속하기를 클릭합니다.

  4. elastic 사용자 이름을 사용하여 포털에 로그인합니다. 비밀번호를 확인하고 변수로 설정하려면 Cloud Shell에서 다음 명령어를 실행합니다.

    PASSWORD=$(kubectl get secret quickstart-es-elastic-user -o=jsonpath='{.data.elastic}' | base64 --decode) && echo $PASSWORD
    

    나중에 이 비밀번호를 변경하려면 안전한 장소에 저장하는 것이 좋습니다.

샘플 데이터 로드 및 준비

Kibana에 처음 로그인하면 샘플 데이터를 시작하라는 메시지가 표시됩니다.

  1. Kibana 포털에서 샘플 데이터 사용해 보기를 클릭합니다.

    Kibana 로그인 창에 샘플 데이터를 사용해 볼 수 있는 메시지와 버튼이 표시됩니다.

  2. 샘플 이동 데이터 카드에서 데이터 추가를 클릭하여 샘플 이동 데이터를 추가합니다.

    샘플을 숙지하려면 대시보드 및 지도를 살펴보세요.

Elasticsearch 데이터 쿼리

다음 단계는 Elasticsearch 데이터를 쿼리할 수 있는지 확인하는 것입니다. 먼저 ECK 클러스터에서 로컬 머신으로 포트 9200(Elasticsearch 서비스가 리슨하는 포트)을 전달합니다. 그런 다음 데이터에 대한 테스트 쿼리를 실행합니다.

  1. Cloud Shell에서 포트 전달을 사용 설정합니다.

    kubectl port-forward service/quickstart-es-http 9200
    
  2. Cloud Shell 메뉴 바에서 새 탭 열기를 클릭합니다. 두 번째 Cloud Shell 세션이 시작됩니다.

  3. Elastic 사용자의 비밀번호를 로컬 변수로 저장합니다.

    PASSWORD=$(kubectl get secret quickstart-es-elastic-user -o=jsonpath='{.data.elastic}' | base64 --decode)
    
  4. 연결을 테스트합니다.

    curl -u "elastic:$PASSWORD" -k "https://localhost:9200"
    

    출력은 다음과 비슷합니다.

    {
      "name" : "quickstart-es-default-0",
      "cluster_name" : "quickstart",
      "cluster_uuid" : "ifdFjTixQ9q7sVc7uUpSnA",
      "version" : {
        "number" : "7.6.1",
        "build_flavor" : "default",
        "build_type" : "docker",
        "build_hash" : "aa751e09be0a5072e8570670309b1f12348f023b",
        "build_date" : "2020-02-29T00:15:25.529771Z",
        "build_snapshot" : false,
        "lucene_version" : "8.4.0",
        "minimum_wire_compatibility_version" : "6.8.0",
        "minimum_index_compatibility_version" : "6.0.0-beta1"
      },
      "tagline" : "You Know, for Search"
    }
    
  5. 샘플 데이터 세트의 문서 개수를 집계합니다.

    curl -u "elastic:$PASSWORD" -k
    "https://localhost:9200/kibana_sample_data_flights/_count"
    

    출력은 다음과 유사합니다.

    {"count":13059,"_shards":{"total":1,"successful":1,"skipped":0,"failed":0}}
    

    출력은 색인에 13,059개의 문서가 있음을 나타냅니다.

  6. 두 번째 Cloud Shell 터미널 세션을 닫고 원래 세션을 열어 둡니다.

  7. 원래 Cloud Shell 세션에서 Control+C를 눌러 더 이상 필요 없는 포트 전달을 중지합니다.

스냅샷 레지스트리 등록

스냅샷을 만들고 복원하려면 스냅샷 저장소를 등록해야 합니다.

  1. Kibana 포털의 Elasticsearch 메뉴에서 스냅샷 및 복원을 클릭한 후 저장소 등록을 클릭합니다.

    스냅샷 및 복원 링크는 저장소 레지스트리 페이지를 엽니다.

  2. 저장소 등록 페이지에서 이름 필드에 examplerepo를 입력하고 저장소 유형으로 Google Cloud Storage를 선택한 후 다음을 클릭합니다.

    저장소 등록 페이지에 저장소 유형에 대한 옵션이 표시됩니다.

  3. 다음 구성 세부정보를 입력합니다.

    • 클라이언트default를 입력합니다.
    • 버킷Cloud Storage에 액세스하기 위한 보안 비밀 생성에서 이전에 만든 버킷 이름을 입력합니다.

      버킷 이름이 기억나지 않는 경우 다음을 수행합니다.

      1. Cloud Shell에서 모든 버킷을 나열합니다.

        gsutil ls
        

        버킷을 찾으려면 목록을 검토하세요.

      2. 포털에서 이전 단계의 gs:// 이름 지정 체계 없이 버킷 이름을 입력합니다. 예를 들어 버킷 URI가 gs://1234-eck-gcs-snapshot이면 1234-eck-gcs-snapshot을 입력합니다.

    • 나머지 필드는 비워둡니다.

  4. 등록을 클릭합니다.

  5. 저장소의 세부정보 창에서 저장소 확인을 클릭하여 연결되어 있는지 확인합니다. 다음 다이어그램은 성공적인 연결을 보여줍니다.

    등록된 저장소의 세부정보 창에는 저장소 이름, 스냅샷 수, 버킷 및 클라이언트 이름과 같은 설정이 포함됩니다.

Elastic Cloud 시작하기

이제 Elastic Cloud에 호스팅된 클러스터를 설정하고 새 클러스터로 데이터를 마이그레이션할 준비가 되었습니다.

클러스터 시작

  1. Cloud Marketplace에서 Elastic Cloud 페이지로 이동합니다.

    Elastic Cloud로 이동

  2. 페이지에 표시된 가격 책정에 동의하는 경우 구매를 클릭한 다음 구독을 클릭합니다.

  3. 사용 설정을 클릭하여 API를 사용 설정합니다. Elastic Cloud 서비스의 API 및 서비스 페이지로 리디렉션됩니다.

  4. Elastic으로 관리를 클릭합니다.

    Elastic Cloud 개요 페이지에는 서비스 세부정보와 관리 옵션이 표시됩니다.

  5. Elastic Cloud 웹사이트로의 리디렉션을 확인하려면 확인을 클릭합니다.

  6. Elastic Cloud 계정을 등록하려면 양식을 작성합니다. 이메일 계정이 확인되었습니다.

  7. 메시지가 표시되면 비밀번호를 만든 다음 로그인합니다.

  8. Elastic Cloud용 기본 포털에서 배포 만들기를 클릭합니다.

  9. 다음을 수행하세요.

    • 클러스터 이름을 example-ec로 지정합니다.
    • 클라우드 플랫폼으로 Google Cloud를 선택합니다.
    • 리전으로 us-central1을 선택합니다.
    • 다른 옵션은 모두 기본값 그대로 둡니다.
  10. 배포 만들기를 클릭합니다.

몇 분 후면 Elastic Cloud에서 작업 클러스터가 프로비저닝되며 자동으로 인스턴스의 배포 대시보드로 이동합니다.

ECK에서 스냅샷 준비

다음 단계는 ECK 인스턴스의 스냅샷을 만들어 Elastic Cloud 인스턴스로 마이그레이션하는 것입니다.

ECK 스냅샷 만들기

스냅샷을 만들려면 ECK 클러스터에 스냅샷 정책을 설정해야 합니다. 이 스냅샷은 이번 마이그레이션에만 필요하므로 스냅샷을 만들면 이 정책이 삭제됩니다.

  1. ECK 클러스터의 웹브라우저에서 이전에 GKE 클러스터에서 만든 부하 분산기의 외부 IP 주소를 복사하여 Kibana에 로그인합니다.

  2. Elasticsearch 메뉴에서 스냅샷 및 복원을 클릭합니다.

    스냅샷과 복원 페이지에 설정된 스냅샷이 없다는 메시지가 나타납니다.

  3. 정책 만들기를 클릭합니다.

  4. 정책 이름 필드에 onetime-migration을 입력합니다.

  5. 스냅샷 이름 필드에 <onetime-migration-{now/d}>를 입력합니다.

  6. 다른 설정은 기본값으로 두고 다음을 클릭합니다.

    정책 만들기 페이지에 물류, 설정, 보존, 리뷰를 포함한 4단계가 표시됩니다.

  7. 스냅샷 설정 페이지에서 설정을 기본값으로 두고 다음을 클릭합니다.

  8. 스냅샷 보존 정책을 입력하라는 메시지가 표시되면 모든 필드를 비워두고 다음을 클릭합니다. 일회성 스냅샷을 만드는 것이기 때문에 보존 정책이 필요하지 않습니다.

  9. 리뷰 정책 페이지에서 정책 만들기를 클릭합니다.

  10. 정책의 요약 창에서 닫기를 클릭합니다.

  11. 스냅샷 및 복원 개요 페이지의 작업 섹션에서 지금 실행을 클릭한 다음 새 창에서 정책 실행을 클릭합니다.

    정책 탭에 정책을 실행할 수 있는 재생 버튼이 있습니다.

    새 스냅샷을 확인하려면 스냅샷 탭에서 onetime-migration으로 시작하는 타임스탬프가 지정된 스냅샷을 클릭합니다. 스냅샷 세부정보가 표시됩니다.

    스냅샷 탭에 스냅샷 상태 및 색인 등의 세부정보를 볼 수 있는 스냅샷이 나열됩니다.

스냅샷 정책 삭제

이제 ECK 인스턴스의 스냅샷이 Cloud Storage에 있으므로 스냅샷 정책을 삭제할 수 있습니다.

  1. Kibana 포털에서 관리를 클릭하고 스냅샷 및 복원을 클릭한 후 정책 탭을 클릭합니다.
  2. 일회성 마이그레이션 정책의 작업 섹션에서 삭제를 클릭합니다.
  3. 정책을 삭제하려면 정책 삭제를 클릭합니다.

정책을 삭제해도 정책을 사용해 만든 스냅샷에는 영향을 미치지 않지만 이 정책을 기반으로 스냅샷을 더 만들 수 없습니다.

스냅샷을 Elastic Cloud로 이동

다음 단계는 새로 생성된 데이터 스냅샷을 Elastic Cloud의 인스턴스로 복원하는 것입니다.

새 서비스 계정 만들기 및 구성

첫 번째 단계는 Elastic Cloud가 Cloud Storage에 액세스하는 데 사용하는 서비스 계정을 만드는 것입니다. 그런 다음 액세스를 사용 설정합니다.

  1. Cloud Shell에서 서비스 계정을 만듭니다.

    gcloud iam service-accounts create ecloud-sa \
        --display-name "Elasticcloud Service Account"
    
    export ec_sa=$(gcloud iam service-accounts list \
        --filter=displayName:"Elasticcloud Service Account" \
        --format='value(email)')
    
    gcloud projects add-iam-policy-binding $PROJECT_ID \
        --member serviceAccount:$ec_sa --role roles/storage.admin
    
    gsutil iam ch serviceAccount:$ec_sa:roles/storage.admin gs://$GCSBUCKET
    
  2. 이 서비스 계정의 키를 만들어 로컬 클라이언트 머신에 다운로드합니다.

    gcloud iam service-accounts keys create ~/ec-sa.json --iam-account $ec_sa
    

    출력은 다음과 비슷합니다.

    created key [e44da1202f82f8f4bdd9d92bc412d1d8a837fa83] of type [json] as
    [/usr/home/username/ec-sa.json] for
    [ecloud-sa@project-id.iam.gserviceaccount.com]
    

    출력에서 절대 경로와 파일 이름을 복사합니다. 파일을 다운로드하는 데 필요합니다.

  3. 더보기를 클릭한 다음 파일 다운로드를 클릭합니다.

    더보기 버튼을 클릭하면 파일 업로드 및 파일 다운로드와 같은 몇 가지 옵션이 표시됩니다.

  4. 이전 단계에서 복사한 키의 절대 경로와 파일 이름을 입력하고 다운로드를 클릭합니다. JSON 키가 로컬 머신에 다운로드됩니다.

  5. Elastic Cloud에 배포용 Elasticsearch 서비스 페이지에서 보안을 클릭한 후 설정 추가를 클릭합니다.

    키 저장소 메시지는 민감한 설정을 구성할 때 보안 비밀 대신 키를 사용할 수 있음을 나타냅니다.

  6. 설정 이름gcs.client.default.credentials_file을 입력하고 JSON 블록 / 파일을 선택합니다.

  7. 로컬 머신에서 텍스트 편집기를 사용하여 다운로드한 JSON 키를 열고 보안 비밀 필드에 텍스트를 복사한 다음 저장을 클릭합니다. 키 저장소에 새 항목이 표시됩니다.

  8. 비밀번호 재설정을 클릭하여 elastic 사용자의 새 비밀번호를 가져온 후 기록합니다.

  9. Kibana 보안 변경 안내에서 Kibana를 클릭합니다.

  10. 이 사용자 인증 정보를 사용하여 Kibana에 로그인합니다.

  11. 메시지가 표시되면 자체 탐색을 클릭하고 샘플 데이터를 로드하지 않습니다.

저장소 만들기

  1. Kibana 포털에서 메뉴 아이콘()을 클릭한 후 스택 관리를 클릭합니다.

    스택 관리는 '관리'에 나열됩니다.

  2. Elasticsearch에서 스냅샷 및 복원을 클릭합니다.

  3. 저장소 탭을 클릭하고 저장소 등록을 클릭합니다.

    '저장소' 탭에 저장소를 등록하는 버튼이 있습니다.

  4. 저장소 이름으로 examplerepo를 입력합니다.

  5. Google Cloud Storage를 선택합니다.

  6. 다음을 클릭합니다.

  7. 버킷 필드에 Cloud Storage 액세스를 위한 보안 비밀 생성에서 이전에 만든 버킷 이름을 입력합니다.

    gs:// 이름 지정 체계 없이 버킷 이름을 입력합니다. 예를 들어 버킷 URI가 gs://1234-eck-gcs-snapshot이면 1234-eck-gcs-snapshot을 입력합니다.

  8. 나머지 필드는 비워 두고 등록을 클릭합니다.

    연결을 확인하려면 저장소 확인을 클릭합니다.

  9. 닫기를 클릭합니다.

스냅샷 복원

  1. Kibana 포털에서 스냅샷 탭을 클릭한 다음 저장소 드롭다운 메뉴에서 examplerepo를 선택합니다.

    저장소 드롭다운 메뉴

    이전에 ECK에서 만든 스냅샷이 표시됩니다.

  2. 작업에서 복원을 클릭합니다.

  3. 시스템 색인을 포함한 모든 색인 전환 버튼을 끕니다.

    복원 세부정보 페이지는 전환 버튼이 x와 함께 꺼진 위치에 있음을 나타냅니다.

  4. 모두 선택 해제를 클릭한 다음 kibana_sample_data_flights, ilm-history-1-000001, 프리픽스가 apm-인 모든 색인을 다시 선택합니다. 이름 앞에 마침표가 있는 색인은 시스템 색인이므로 선택하지 않습니다.

    기본 설정을 사용하여 복원하려고 하면 다음과 유사한 오류 메시지가 표시됩니다.

    [snapshot_restore_exception] [examplerepo:onetime-migration2020.07.07-mt2pg1p7sb2sci9fs-yxlw/7OdEOWYVRQyIh9S2NaPypQ] cannot restore index [.security-7] because an open index with same name already exists in the cluster. Either close or delete the existing index or restore the index under a different name by providing a rename pattern and replacement name
    

    이 오류는 시스템 색인을 복원할 수 없으며 복원하지 않아야 하기 때문에 발생합니다. 메시지의 안내를 따르면 Kibana가 더 이상 제대로 작동하지 않을 수 있습니다. 기존의 열려 있는 색인을 닫거나 삭제하는 절차는 시스템 이외의 색인에만 해당됩니다.

  5. 나머지 설정은 기본값으로 두고 다음을 클릭합니다.

  6. 색인 설정 메뉴에서 모든 설정을 기본값으로 두고 다음을 클릭합니다.

  7. 복원 세부정보 페이지에서 스냅샷 복원을 클릭합니다.

    복원 프로세스가 완료되면 데이터가 복원되었음을 보여주는 복원 상태 대시보드로 이동합니다.

  8. Kibana에서 색인 패턴을 클릭하여 색인을 복원합니다.

  9. 색인 패턴 만들기를 클릭합니다.

    사용 가능한 색인이 표시됩니다. ECK가 자동으로 생성한 kibana_sample_data_flights 색인을 찾습니다.

  10. 색인 패턴 필드에 kib를 입력합니다. kibana_sample_data_flights가 패턴과 일치합니다.

  11. 다음 단계를 클릭합니다.

  12. 시간 필터 필드 이름 드롭다운 메뉴에서 타임스탬프를 선택합니다.

  13. 색인 패턴 만들기를 클릭합니다.

  14. (선택사항) 검색을 클릭하면 원시 데이터가 ECK 환경에서 표시된 상태로 표시됩니다.

  15. 주 메뉴에서 메뉴 끝까지 스크롤하고 관리 섹션에서 개발 도구를 클릭합니다.

  16. 왼쪽에서 GET /kibana_sample_data_flights/_count를 입력하고 요청 보내기 버튼을 클릭합니다. 출력에는 13,059개 문서가 나타나며, 이는 ECK의 색인에 있는 문서 수와 일치합니다.

정리

이 튜토리얼에서 사용한 리소스 비용이 Google Cloud 계정에 청구되지 않도록 하려면 이 튜토리얼에서 만든 Google Cloud 프로젝트를 삭제하면 됩니다.

  1. In the Google Cloud console, go to the Manage resources page.

    Go to Manage resources

  2. In the project list, select the project that you want to delete, and then click Delete.
  3. In the dialog, type the project ID, and then click Shut down to delete the project.

다음 단계