0

Cấu hình Elasticsearch với SSL và viết file deployment từ đầu đến cuối

Để cấu hình Elasticsearch với SSL và viết file deployment từ đầu đến cuối, bạn có thể làm theo các bước sau:

Bước 1: Tạo Chứng Chỉ SSL Trước tiên, bạn cần tạo một cặp khóa công khai và khóa riêng tư cho Elasticsearch. Dưới đây là cách tạo chứng chỉ bằng OpenSSL:

bash Copy code

Tạo thư mục để lưu trữ chứng chỉ

mkdir -p certs && cd certs

Tạo khóa riêng tư

openssl genrsa -out elasticsearch.key 2048

Tạo yêu cầu chứng chỉ

openssl req -new -key elasticsearch.key -out elasticsearch.csr

Tạo chứng chỉ tự ký

openssl x509 -req -days 365 -in elasticsearch.csr -signkey elasticsearch.key -out elasticsearch.crt Sau khi thực hiện các lệnh trên, bạn sẽ có hai file: elasticsearch.key và elasticsearch.crt.

Bước 2: Tạo Secret Kubernetes Để bảo mật, bạn nên lưu trữ chứng chỉ và khóa trong một Kubernetes Secret:

kubectl create secret generic elasticsearch-ssl-secret \
  --from-file=elasticsearch.key \
  --from-file=elasticsearch.crt \
  -n elks

Bước 3: Cấu Hình elasticsearch.yml Bạn cần cấu hình file elasticsearch.yml để sử dụng SSL. Dưới đây là cấu hình cần thiết:

xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.key: /usr/share/elasticsearch/config/elasticsearch.key
xpack.security.transport.ssl.certificate: /usr/share/elasticsearch/config/elasticsearch.crt

Bước 4: Viết File Deployment Dưới đây là file deployment hoàn chỉnh cho Elasticsearch với cấu hình SSL:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: elasticsearch-deployment
  namespace: elks
spec:
  replicas: 1
  selector:
    matchLabels:
      app: elasticsearch
  template:
    metadata:
      labels:
        app: elasticsearch
    spec:
      containers:
      - name: elasticsearch
        image: docker.elastic.co/elasticsearch/elasticsearch:8.5.1
        ports:
        - containerPort: 9200
        resources:
          limits:
            memory: 2Gi
          requests:
            memory: 1Gi
        env:
         - name: discovery.type
           value: single-node
         - name: ELASTIC_PASSWORD
           value: "enao@123"
         - name: xpack.security.enabled
           value: "true"
         - name: xpack.security.transport.ssl.enabled
           value: "true"
        volumeMounts:
          - name: config-volume
            mountPath: /usr/share/elasticsearch/config
          - name: elasticsearch-ssl-volume
            mountPath: /usr/share/elasticsearch/config
            readOnly: true
      volumes:
       - name: config-volume
         configMap:
           name: elasticsearch-config
       - name: elasticsearch-ssl-volume
         secret:
           secretName: elasticsearch-ssl-secret

---

apiVersion: v1
kind: Service
metadata:
  name: elasticsearch-service
  namespace: elks
spec:
  type: NodePort
  selector:
    app: elasticsearch
  ports:
    - protocol: TCP
      port: 9200
      targetPort: 9200
      nodePort: 30010

Bước 5: Áp Dụng Cấu Hình Áp dụng các cấu hình đã tạo trong Kubernetes:

kubectl apply -f your-deployment-file.yaml

Bước 6: Kiểm Tra Trạng Thái Kiểm tra trạng thái của pod Elasticsearch:

kubectl get pods -n elks

Nếu pod không chạy, bạn có thể xem logs để tìm hiểu nguyên nhân:

Ghi Chú Đảm bảo rằng bạn đã tạo ConfigMap elasticsearch-config để lưu trữ cấu hình Elasticsearch nếu cần. Nếu bạn đã cấu hình SSL, hãy chắc chắn rằng client cũng được cấu hình đúng để kết nối qua SSL. Hãy thực hiện theo các bước trên và thông báo cho tôi nếu bạn gặp bất kỳ vấn đề nào khác!


All Rights Reserved

Viblo
Let's register a Viblo Account to get more interesting posts.