Registrazione al servizio AWS Elasticsearch da Kubernetes

In questa guida installeremo il servizio Amazon Elasticsearch e inoltreremo i log dal nostro cluster Kubernetes.

Useremo fluentd con “aws_elasticsearch_plugin” per raggiungere questo obiettivo.

Passaggio 1: crea un utente IAM chiamato: “elasticsearch” (scegli: Accesso programmatico AWS) e scarica le credenziali.

Passaggio 2: creare un’istanza del servizio Amazon Elasticsearch (Dashboard: Servizi-> Analytics-> Servizio Elasticsearch). Per questo esempio avremmo usato solo una singola istanza. Sentiti libero di scegliere quello che fa per te.

Nota: se i payload HTTP saranno superiori a 10 MB rispetto alla dimensione dell’istanza più piccola che è possibile utilizzare è: m3.xlarge

Passaggio 3: modificare la politica dell’istanza per consentire sia all’utente “elasticsearch” che tutti i gateway NAT del cluster Kubernetes (si presume una topologia privata) e qualsiasi indirizzo IP da cui si desidera accedere alla dashboard di Kibana .

Esempio di politica di seguito:

Passaggio 4: modificare fluentd-daemonset.yml di seguito per aggiungere AWS_ACCESS_KEY_ID e AWS_SECRET_ACCESS_KEY per l’utente elasticsearch creato nel passaggio 1. e alcune altre variabili (AWS_REGION, AWS_ELASTICSEARCH_URL (questo sarà l’endpoint che viene generato una volta che l’istanza è fatto).

Passaggio 5: avviare DaemonSet in kubernetes:

  kubectl create -f fluentd-aws-es-daemonset.yml 

I log dovrebbero ora scorrere da tutti i pod verso Amazon Elasticsearch Service.

Puoi navigare nel tuo URL dell’endpoint Kibana e dare un’occhiata: search- -xxxxxx.us-east-1.es.amazonaws.com/_plugin/kibana/

Grazie a https://github.com/cheungpat per aver fornito l’immagine docker contenente fluentd e il plugin aws elasticsearch:

  • https://github.com/cheungpat/fluentd-es-aws
  • https://hub.docker.com/r/cheungpat/fluentd-elasticsearch-aws