0
0
Lập trình
Admin Team
Admin Teamtechmely

Hướng dẫn cấu hình SSL cho Elasticsearch trên Kubernetes: Tạo token đăng ký một cách tự động

Đăng vào 2 tuần trước

• 4 phút đọc

Chủ đề:

Kibanaelastic

Giới thiệu

Trong bài viết này, chúng ta sẽ đi vào chi tiết cách cấu hình Elasticsearch chạy trên Kubernetes với tính năng SSL được thiết lập cho giao thức HTTP. Một phần quan trọng trong cấu hình này là cách tạo token đăng ký (enrollment token) tự động ngay từ khi khởi động Elasticsearch lần đầu tiên.

Bước 1: Cấu hình file elasticsearch.yml

Để bắt đầu, bạn cần đảm bảo rằng file elasticsearch.yml của bạn được cấu hình chính xác như sau:

yaml Copy
xpack.security.enabled: true
xpack.security.enrollment.enabled: true

# Cấu hình SSL cho HTTP layer (cần thiết nếu không bỏ qua yêu cầu)

xpack.security.http.ssl.enabled: true
xpack.security.http.ssl.keystore.path: /usr/share/elasticsearch/config/certs/elastic-certificates.p12
xpack.security.http.ssl.truststore.path: /usr/share/elasticsearch/config/certs/elastic-certificates.p12

xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.verification_mode: certificate
xpack.security.transport.ssl.keystore.path: /usr/share/elasticsearch/config/certs/elastic-certificates.p12
xpack.security.transport.ssl.truststore.path: /usr/share/elasticsearch/config/certs/elastic-certificates.p12

Bước 2: Thêm initContainer để tạo token trước khi Elasticsearch khởi động

Tiếp theo, bạn sẽ cần thêm một initContainer trong file Deployment của Elasticsearch để tạo ra token đăng ký cho Kibana và lưu nó vào một file. Dưới đây là cấu hình mẫu:

yaml Copy
apiVersion: apps/v1
kind: Deployment
metadata:
  name: elasticsearch-deployment
  namespace: elk
spec:
  replicas: 1
  selector:
    matchLabels:
      app: elasticsearch
  template:
    metadata:
      labels:
        app: elasticsearch
    spec:
      containers:
        - name: elasticsearch
          image: docker.elastic.co/elasticsearch/elasticsearch:8.5.0
          ports:
            - containerPort: 9200
            - containerPort: 9300
          volumeMounts:
            - name: elastic-config
              mountPath: /usr/share/elasticsearch/config
            - name: certs
              mountPath: /usr/share/elasticsearch/config/certs
            - name: enrollment-token
              mountPath: /usr/share/elasticsearch/config/token
      initContainers:
        - name: token-generator
          image: docker.elastic.co/elasticsearch/elasticsearch:8.5.0
          command:
            - /bin/bash
            - -c
            - |
              bin/elasticsearch-create-enrollment-token -s kibana > /usr/share/elasticsearch/config/token/kibana-token.txt
          volumeMounts:
            - name: certs
              mountPath: /usr/share/elasticsearch/config/certs
            - name: enrollment-token
              mountPath: /usr/share/elasticsearch/config/token
      volumes:
        - name: elastic-config
          configMap:
            name: elasticsearch-config
        - name: certs
          secret:
            secretName: elasticsearch-certificates
        - name: enrollment-token
          emptyDir: {}

Giải thích cấu hình

  • initContainer token-generator: Container này sẽ chạy trước khi Elasticsearch khởi động. Nó thực hiện lệnh elasticsearch-create-enrollment-token để tạo token và lưu vào file /usr/share/elasticsearch/config/token/kibana-token.txt.

  • Volumes:

    • certs: Giúp gắn các chứng chỉ cần thiết từ bí mật.
    • enrollment-token: Sử dụng emptyDir để lưu trữ tạm thời file token.
  • Volume Mounts: Gắn các volumes cần thiết vào các container để lưu chứng chỉ và token.

Bước 3: Truy xuất token sau khi Elasticsearch khởi động

Sau khi Elasticsearch khởi động, bạn có thể lấy token từ file kibana-token.txt bằng cách sử dụng lệnh sau:

bash Copy
kubectl exec -it <elasticsearch-pod-name> -n elk -- cat /usr/share/elasticsearch/config/token/kibana-token.txt

Mệnh lệnh này sẽ in ra token đăng ký mà bạn có thể dùng để cấu hình Kibana.

Kết luận

Cách sử dụng initContainers giúp tự động hóa quá trình tạo token ngay khi Elasticsearch khởi động. File token sẽ được lưu trong một volume tạm thời và có thể dễ dàng truy xuất từ bên ngoài. Bạn cũng cần đảm bảo rằng cấu hình SSL/TLS đã được thiết lập nếu yêu cầu, hoặc có thể vô hiệu hóa tùy theo mục đích sử dụng. Phương pháp này sẽ giúp bạn dễ dàng quản lý và bảo mật Elasticsearch trong môi trường Kubernetes.
source: viblo

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào