Azure Kubernetes Service의 Kubernetes에서 Elasticsearch 실행

Kubernetes는 컨테이너와 컨테이너에서 실행되는 애플리케이션을 오케스트레이션하기 위한 사실상의 표준이라고 해도 무방합니다. 표준으로 다양한 관리 서비스 및 오케스트레이션 옵션 중에서 선택할 수 있습니다. 이 블로그 게시물에서는 ECK(Kubernetes의 Elastic Cloud)를 운영자로 사용하여 AKS(Azure Kubernetes Service)에서 Elastic Stack을 실행하는 방법을 살펴보겠습니다.

Elastic Cloud on Kubernetes 은 Kubernetes에서 Elastic Stack을 실행하기 위한 공식 연산자입니다. ECK는 Elastic Stack을 안전하게 관리, 확장, 업그레이드 및 배포하는 데 도움이 됩니다. 아래 단계에서는 AKS에 ECK를 배포한 다음 해당 배포를 사용하여 Azure의 가상 머신에서 로그, 메트릭, 보안 이벤트를 수집합니다.

우리가 할 일은 다음과 같습니다.
  • Azure Kubernetes Service 클러스터 생성
  • Kubernetes에 Elastic Cloud 설치
  • Elasticsearch 클러스터 생성
  • Kibana 배포
  • 모니터링할 Azure VM 생성
  • 메트릭 비트를 배포하여 VM 메트릭 및 이벤트 수집

  • AKS, ECK, Elasticsearch 및 Kibana 배포



    Note: You need to have Azure Account and the Azure CLI for Microsoft Azure installed to run some platform-specific commands. This helps you to create your cluster using this Azure CLI command.



    1단계: AKS 클러스터 만들기




    az aks create --resource-group resourceGroupName --name clusterName --node-count 3 --generate-ssh-keys
    


    2단계: AKS 클러스터에 연결




    az aks get-credentials --resource-group resourceGroupName --name clusterName
    


    3단계: ECK 연산자 설치




    kubectl apply -f https://download.elastic.co/downloads/eck/1.1.2/all-in-one.yamlkubectl -n elastic-system logs -f statefulset.apps/elastic-operator
    


    4단계: 외부 IP로 Elasticsearch 클러스터 생성



    Azure Kubernetes Service에서 사용할 수 있는 기본 부하 분산 장치를 사용하고 있습니다.

    cat <<EOF | kubectl apply -f -apiVersion: elasticsearch.k8s.elastic.co/v1 
    kind: Elasticsearch 
    metadata: 
      name: quickstart 
    spec: 
      version: 7.9.2 #Make sure you use the version of your choice 
      http: 
        service: 
          spec: 
            type: LoadBalancer #Adds a External IP 
      nodeSets: 
      - name: default 
        count: 1 
        config: 
          node.master: true 
          node.data: true 
          node.ingest: true 
          node.store.allow_mmap: false 
    EOF
    


    5단계: 클러스터 생성 모니터링




    kubectl get elasticsearch 
    



    kubectl get pods -w
    


    6단계: 생성된 포드의 로그 확인




    kubectl logs -f quickstart-es-default-0 
    



    kubectl get service quickstart-es-http
    


    7단계: Elasticsearch 클러스터의 비밀번호 검색




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



    curl -u "elastic:$PASSWORD" -k "https://<IP_ADDRESS>:9200"
    


    Note: The public IP address of Elasticsearch can be picked by running:

    kubectl get svc quickstart-es-http
    


    8단계: Kibana 배포




    cat <<EOF | kubectl apply -f - 
    apiVersion: kibana.k8s.elastic.co/v1 
    kind: Kibana 
    metadata: 
      name: quickstart 
    spec: 
      version: 7.9.2 #Make sure Kibana and Elasticsearch are on the same version. 
      http: 
        service: 
          spec: 
            type: LoadBalancer #Adds a External IP 
      count: 1 
      elasticsearchRef: 
        name: quickstart 
    EOF
    


    9단계: Kibana 배포 모니터링




    kubectl get kibana
    


    Azure 메트릭 수집 및 분석



    이제 AKS에서 Kibana를 사용하여 Elasticsearch 클러스터를 만들었으므로 계속해서 Azure Cloud 자체에서 일부 관찰 가능성 데이터를 수집해 보겠습니다. Filebeat 및 Metricbeat는 Azure Cloud Platform에서 로그(활동, 로그인, 감사) 및 메트릭(vm, 컨테이너 레지스트리, 청구)을 쉽게 수집할 수 있도록 즉시 사용 가능한 Azure 모듈과 함께 제공되므로 이를 쉽게 수행할 수 있습니다.

    이 자습서에서는 Azure VM에 Metricbeat를 설치하고 Azure 클라우드 모듈을 활성화합니다. 그 전에 Azure Resource Manager 인증 모델을 사용하는 Azure Monitor REST API로 인증하기 위한 자격 증명도 필요합니다.

    Azure Active Directory 앱을 생성하여 얻을 수 있는 client_id , client_secret , subscription_id , tenant_id 이 필요합니다. 리소스에 액세스할 수 있는 Azure AD 애플리케이션 및 서비스 주체에 대한 이 가이드를 사용할 수 있습니다.

    1단계: Azure VM 생성 및 VM에 SSH 생성




    az vm create \ 
      --resource-group myResourceGroup \ 
      --name myVM \ 
      --image UbuntuLTS \ 
      --admin-username azureuser \ 
      --generate-ssh-keys ssh azureuser@<IP_ADDRESS>
    


    2단계: Metricbeat 설치




    wget https://artifacts.elastic.co/downloads/beats/metricbeat/metricbeat-7.9.2-amd64.deb
    


    3단계: Metricbeat에서 Elasticsearch 및 Kibana 자격 증명 구성



    이를 통해 AKS에서 생성된 Elasticsearch 클러스터로 데이터를 배송하고 Kibana에서 대시보드를 로드할 수 있습니다.

    vim /etc/metricbeat/metricbeat.yml
    



     setup.kibana: 
       host: "https://<public_ip_addr>:5601"
    


    Note: The public IP address of Kibana can be picked by running:

    kubectl get "kubectl get svc quickstart-kb-http"
    



    vim /etc/metricbeat/modules.d/azure.yml.disabled
    


    yml 파일에 나열된 모든 메트릭 집합에 대해 client_id, client_secret, subscription_id, tenant_id를 바꿉니다. 샘플은 다음과 같을 수 있습니다.

    - module: azure 
      metricsets: 
      - monitor 
      enabled: true 
      period: 300s 
      client_id: '8dec1ab1-1691-48a6-af43-f87de68e971b' 
      client_secret: '~fwL-MhOcguaD2yK1e_.OWHhhqwdp-p974' 
      tenant_id: 'aa40685b-417d-4664-b4ec-8f7640719adb' 
      subscription_id: '70bd6e77-4b1e-4835-8896-db77b8eef364' 
      refresh_list_interval: 600s 
      resources: 
      - resource_query: "resourceType eq 'Microsoft.DocumentDb/databaseAccounts'" 
        metrics: 
        - name: ["DataUsage", "DocumentCount", "DocumentQuota"] 
          namespace: "Microsoft.DocumentDb/databaseAccounts"
    


    4단계: Azure 모듈 활성화 및 Metricbeat 시작




    cd /usr/bin/
    



    ./metricbeat modules enable azure
    ./metricbeat setup --dashboards
    ./metricbeat -e
    


    5단계: Kibana에서 Azure 메트릭 모니터링



    Kibana에 로그인하고 대시보드로 이동합니다. 스토리지, 데이터베이스, 청구와 관련하여 미리 구성된 여러 대시보드를 보려면 "Azure"를 검색하십시오. 샘플 모니터링 대시보드는 다음과 같습니다.



    마무리



    그리고 그게 다야! 관리형 Kubernetes 서비스에서 안전한 Elastic Stack 배포를 성공적으로 구축했습니다. Elastic APM 또는 Elastic Workplace Search 과 같은 다른 애플리케이션을 배포할 수도 있습니다. 그 외에도 cross-cluster searchreplication 을 활성화하여 여러 지역의 Kubernetes 클러스터에 Elastic Stack을 배포하여 사용자에게 서비스를 제공할 수 있습니다.

    (Kubernetes 서비스에서) try ECK for yourself을 권장하며, 이 블로그 게시물과 관련하여 추가 질문이 있는 경우 언제든지 community discussion forums 또는 Slack workspace으로 연락할 수 있습니다.

    Elastic이 Kubernetes 관찰 가능성에 어떤 도움을 줄 수 있는지 자세히 알아보려면 Best of ElasticObservability webinars series을 확인하십시오.

    당신은 나를 따라 할 수 있습니다

    좋은 웹페이지 즐겨찾기