Creazione di un archivio dati Elasticsearch su Linux x86_64

Installare l'operatore Elasticsearch e configurare l'archivio dati.

Elasticsearch versioni degli operatori e tag delle immagini

Le seguenti immagini sono necessarie per le versioni dell'operatore o del grafico Helm in evidenza.

Tabella 1. Versioni dell'operatore e tag immagine per la distribuzione
Piattaforma Versioni operatore Versione grafico Helm Immagine con tag
Linux® x86_64 3.4.1 3.4.1 artifact-public.instana.io/self-hosted-images/3rd-party/operator/elasticsearch: 3.4.1_v0.34.0

artifact-public.instana.io/self-hosted-images/3rd-party/datastore/elasticsearch: 8.18.6_v0.25.0

Installazione di " Elasticsearch " online

Completare questi passi per installare l'archivio dati Elasticsearch .

  1. Crea lo spazio dei nomi instana-elastic .

    kubectl create namespace instana-elastic
     
  2. Crea l'account elasticsearch di servizio.

    kubectl create serviceaccount elasticsearch -n instana-elastic
     
  3. Crea i segreti di pull dell'immagine per lo spazio dei nomi instana-elastic . Aggiornare il valore <download_key> con la propria chiave di download.

    kubectl create secret docker-registry instana-registry --namespace instana-elastic \
    --docker-username=_ \
    --docker-password=<download_key> \
    --docker-server=artifact-public.instana.io
     
  4. Installare l'operatore Elasticsearch .

    helm install elastic-operator instana/eck-operator -n instana-elastic --version=3.4.1 --set image.repository=artifact-public.instana.io/self-hosted-images/3rd-party/operator/elasticsearch --set image.tag=3.4.1_v0.34.0 --set imagePullSecrets[0].name="instana-registry"
     
  5. Crea un file ` YAML `, ad esempio elastic.yaml, con la configurazione ` Elasticsearch `.

    apiVersion: elasticsearch.k8s.elastic.co/v1
    kind: Elasticsearch
    metadata:
      name: instana
    spec:
      version: 8.18.6
      image: artifact-public.instana.io/self-hosted-images/3rd-party/datastore/elasticsearch:8.18.6_v0.25.0
      nodeSets:
        - name: default
          count: 3
          config:
            node.roles: 
              - master
              - data
              - ingest
            node.store.allow_mmap: false
            search.max_buckets: 300000
          podTemplate:
            spec:
              # Add the following podAntiAffinity snippet to schedule each pod on a different node. 
              # affinity:
              #   podAntiAffinity:
              #     requiredDuringSchedulingIgnoredDuringExecution:
              #     - labelSelector:
              #           matchLabels:
              #             elasticsearch.k8s.elastic.co/cluster-name: instana
              #       topologyKey: kubernetes.io/hostname          
              serviceAccountName: elasticsearch
              imagePullSecrets:
                - name: instana-registry
              # Add the following securityContext snippet for Kubernetes offerings other than OCP.
              # securityContext:
              #   fsGroup: 1000
              #   runAsGroup: 1000
              #   runAsUser: 1000
          volumeClaimTemplates:
            - metadata:
                name: elasticsearch-data # Do not change this name unless you set up a volume mount for the data path.
              spec:
                accessModes:
                  - ReadWriteOnce
                resources:
                  requests:
                    storage: 20Gi
      http:
        tls:
          selfSignedCertificate:
            disabled: true
     
  6. Completa la procedura in Distribuzione e verifica di Elasticsearch (online e offline).

Installazione offline di " Elasticsearch "

Se non hai ancora eseguito il pull delle immagini Elasticsearch dal registro esterno quando hai preparato per l'installazione, puoi eseguirne il pull ora. Immetti questi comandi sul tuo host bastion. Quindi, copia le immagini sul tuo host Instana che si trova nel tuo ambiente isolato.

docker pull artifact-public.instana.io/self-hosted-images/3rd-party/operator/elasticsearch:3.4.1_v0.34.0
docker pull artifact-public.instana.io/self-hosted-images/3rd-party/datastore/elasticsearch:8.18.6_v0.25.0
         

Esegui i seguenti passaggi sul tuo host Instana.

  1. Contrassegnare le immagini con una nuova tag nel registro delle immagini interno.

    docker tag artifact-public.instana.io/self-hosted-images/3rd-party/operator/elasticsearch:3.4.1_v0.34.0 <internal-image-registry>/operator/elasticsearch:3.4.1_v0.34.0
    docker tag artifact-public.instana.io/self-hosted-images/3rd-party/datastore/elasticsearch:8.18.6_v0.25.0 <internal-image-registry>/datastore/elasticsearch:8.18.6_v0.25.0
                   
  2. Eseguire il push delle immagini al registro delle immagini interno.

    docker push <internal-image-registry>/operator/elasticsearch:3.4.1_v0.34.0
    docker push <internal-image-registry>/datastore/elasticsearch:8.18.6_v0.25.0
                   
  3. Crea lo spazio dei nomi instana-elastic per le istanze Elasticsearch .

    kubectl create namespace instana-elastic
     
  4. Crea l'account elasticsearch di servizio.

    kubectl create serviceaccount elasticsearch -n instana-elastic
     
  5. Opzionale: Creare un segreto di estrazione dell'immagine se il registro delle immagini interno richiede l'autenticazione.

    kubectl create secret docker-registry <secret_name> --namespace instana-elastic \
    --docker-username=<registry_username> \
    --docker-password=<registry_password> \
    --docker-server=<internal-image-registry>:<internal-image-registry-port> \
    --docker-email=<registry_email>
     
  6. Installare l'operatore Elasticsearch . Se si è creata un'immagine pull secret nel passaggio precedente, aggiungere --set imagePullSecrets[0].name="<internal-image-registry-pull-secret>" al comando seguente.

    helm install elastic-operator eck-operator-3.4.1.tgz -n instana-elastic --version=3.4.1 --set image.repository=<internal-image-registry>/operator/elasticsearch --set image.tag=3.4.1_v0.34.0
                   
  7. Crea un file ` YAML `, ad esempio elasticsearch.yaml, con la configurazione ` Elasticsearch `.

    apiVersion: elasticsearch.k8s.elastic.co/v1
    kind: Elasticsearch
    metadata:
      name: instana
    spec:
      version: 8.18.6
      image: <internal-image-registry>/datastore/elasticsearch:8.18.6_v0.25.0
      nodeSets:
        - name: default
          count: 3
          config:
            node.roles: 
              - master
              - data
              - ingest
            node.store.allow_mmap: false
          podTemplate:
            spec:
              # Add the following podAntiAffinity snippet to schedule each pod on a different node. .
              # affinity:
              #   podAntiAffinity:
              #     requiredDuringSchedulingIgnoredDuringExecution:
              #     - labelSelector:
              #           matchLabels:
              #             elasticsearch.k8s.elastic.co/cluster-name: instana
              #       topologyKey: kubernetes.io/hostname
              serviceAccountName: elasticsearch
            # Optional: if you created an image pull secret for your internal registry, uncomment the following lines and update the image pull secret information.
            # imagePullSecrets:
            #   - name: <internal-image-registry-pull-secret>
              # Add the following securityContext snippet for Kubernetes offerings other than OCP.
              # securityContext:
              #   fsGroup: 1000
              #   runAsGroup: 1000
              #   runAsUser: 1000
          volumeClaimTemplates:
            - metadata:
                name: elasticsearch-data # Do not change this name unless you set up a volume mount for the data path.
              spec:
                accessModes:
                  - ReadWriteOnce
                resources:
                  requests:
                    storage: 20Gi
      http:
        tls:
          selfSignedCertificate:
            disabled: true
     
  8. Completa la procedura in Distribuzione e verifica di Elasticsearch (online e offline).

Implementazione e verifica di Elasticsearch (online e offline)

Per distribuire l'istanza Elasticsearch e creare l'archivio dati, completare la seguente procedura:

  1. Distribuire Elasticsearch. Per impostazione predefinita, un utente con il nome elastic viene creato con una password generata casualmente.

    kubectl apply -f elastic.yaml -n instana-elastic
    kubectl wait elasticsearch/instana --for=condition=ReconciliationComplete --timeout=300s -n instana-elastic
     
  2. Richiamare la parola d'ordine.

    kubectl get secret instana-es-elastic-user -n instana-elastic -o go-template='{{.data.elastic | base64decode}}' && echo
     
  3. Memorizzare la password richiamata in config.yaml come mostrato nella seguente parte di codice. Sostituire < RETRIEVED_FROM_SECRET> con la password ricevuta nel passo precedente.

    datastoreConfigs:
      ...
      elasticsearchConfig:
        adminUser: elastic
        adminPassword: <RETRIEVED_FROM_SECRET>
        user: elastic
        password: <RETRIEVED_FROM_SECRET>
      ...
     
  4. Verificare la distribuzione dell'operatore Elasticsearch .

    kubectl get all -n instana-elastic
     

    Se l'operatore Elasticsearch viene distribuito correttamente, l'output del comando mostra lo stato dell'operatore come Running come mostrato nel seguente esempio:

    NAME                       READY   STATUS    RESTARTS      AGE
    pod/elastic-operator-0     1/1     Running   1 (10m ago)   10m
    pod/instana-es-default-0   1/1     Running   0             6m44s
    pod/instana-es-default-1   1/1     Running   0             6m44s
    pod/instana-es-default-2   1/1     Running   0             6m44s
    
    NAME                               TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)    AGE
    service/elastic-operator-webhook   ClusterIP   192.168.1.41    <none>        443/TCP    10m
    service/instana-es-default         ClusterIP   None            <none>        9200/TCP   6m46s
    service/instana-es-http            ClusterIP   192.168.1.111   <none>        9200/TCP   6m48s
    service/instana-es-internal-http   ClusterIP   192.168.1.196   <none>        9200/TCP   6m48s
    service/instana-es-transport       ClusterIP   None            <none>        9300/TCP   6m48s
    
    NAME                                  READY   AGE
    statefulset.apps/elastic-operator     1/1     10m
    statefulset.apps/instana-es-default   3/3     6m48s