راه اندازی elasticsearch در kubernetes
الاستیک سرچ (Elasticsearch)، یک موتور جستجوی اوپن سورس است که توسط شرکت آپاچی و بر اساس Apache Lucene ساخته شده است. مبنای الاستیک سرچ، معماری Rest است.
برای راه اندازی الستیک سرچ در kubernetes از راه های مختلفی میشه استفاده کرد از جمله eck operator, helm و ... که در این مقاله از روش eck operator استفاده شده.
حالا eck operator چیه manager الستیک سرچ هست که برای راه اندازی الستیک مورد استفاده قرار می گیره یعنی ما فقط eck را رو تو یک namespace بالا می یاریم و کانفیگ الستیک رو براش ارسال می کنیم و شروع به راه اندازی الستیک می کنه.
برای راه اندازی eck مراحل زیر رو طی می کنیم:
- با استفاده از دستور زیر برای کوبرنتیز custom resource های مرتبط با الستیک ایجاد می شود:
kubectl create -f https://download.elastic.co/downloads/eck/2.2.0/crds.yaml
- بعد نوبت نصب operator فرا می رسد:
kubectl apply -f https://download.elastic.co/downloads/eck/2.2.0/operator.yaml
که namespace پیش فرض آن elastic-system می باشد
حالا فقط کافیه به صورت زیر کانفیگ الستیک رو با استفاده از kubectl به سمت کوبرنتیز ارسال کنیم
cat <<EOF | kubectl apply -n logs -f -
apiVersion: elasticsearch.k8s.elastic.co/v1
kind: Elasticsearch
metadata:
name: eck
spec:
version: 7.16.2
nodeSets:
- name: master
count: 1
volumeClaimTemplates:
- metadata:
name: elasticsearch-data
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 5Gi
storageClassName: hostpath
podTemplate:
spec:
nodeSelector:
type: tools
containers:
- name: elasticsearch
readinessProbe:
exec:
command:
- bash
- -c
- /mnt/elastic-internal/scripts/readiness-probe-script.sh
failureThreshold: 3
initialDelaySeconds: 60
periodSeconds: 12
successThreshold: 1
timeoutSeconds: 60
env:
- name: READINESS_PROBE_PROTOCOL
value: "http"
config:
node.roles: ["master"]
xpack.security.enabled: true
node.store.allow_mmap: false
xpack.security.http.ssl.enabled: false
- name: data
count: 1
volumeClaimTemplates:
- metadata:
name: elasticsearch-data
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 100Gi
storageClassName: openebs-hostpath
podTemplate:
spec:
nodeSelector:
type: tools
containers:
- name: elasticsearch
readinessProbe:
exec:
command:
- bash
- -c
- /mnt/elastic-internal/scripts/readiness-probe-script.sh
failureThreshold: 3
initialDelaySeconds: 60
periodSeconds: 12
successThreshold: 1
timeoutSeconds: 60
env:
- name: READINESS_PROBE_PROTOCOL
value: "http"
config:
node.roles: ["data"]
xpack.security.enabled: true
node.store.allow_mmap: false
xpack.security.http.ssl.enabled: false
EOF
در کانفیک بالا تو قسمت nodeset تعداد و نوع pod ها مشخص شده هستند که الان فقط pod های master و data هر کدام یکی ساخته می شوند
از بخش های مهم تنظیمات بالا به موارد زیر باید توجه بشه:
- -n logs
برای مشخص کردن namespace ای هست که الستیک در آن بالا آورده می شود به باید از قبل در کوبرنتیز ساخته شود
- storageClassName
اگر از storageclass استفاده نمی شود باید اسم pv و pvc به جای آن داده شود
- nodeSelector
این قسمت برای بالا آوردن pod در node خاصی با استفاده از label موجود در node هست که اگر نیازی نیست حذف شود
- xpack.security.enabled
با فعال کردن این گزینه بخش xpack راه اندازی می شود که باعث اضافه کردن user و pass به لاگین الستیک می شود که user و pass در یک secret ذخیره شده می باشد
علاوه بر pod های بالا می توان انواع مختلفی مثل ingest, ml, transform و ... به کلاستر الستیک اضافه کرد.
مطلبی دیگر از این انتشارات
معرفی کتابخانه SolidJS
مطلبی دیگر از این انتشارات
تکنولوژی WebRTC
مطلبی دیگر از این انتشارات
استفاده از S3 با کمک Boto3 - بخش اول