+1

SSL cho HTTP layer Elastic

Để cấu hình file Deployment cho Elasticsearch trên Kubernetes và in ra enrollment token ngay lần đầu chạy, bạn cần thực hiện một số bước để tích hợp quá trình tạo token vào trong file Deployment. Bạn có thể sử dụng initContainers trong Kubernetes để chạy lệnh tạo token trước khi Elasticsearch khởi động, và lưu kết quả vào nơi mà bạn có thể truy xuất sau này.

Dưới đây là các bước chi tiết:

Bước 1: Cấu hình elasticsearch.yml cho việc tạo token Đảm bảo rằng file elasticsearch.yml của bạn có cấu hình để bật tính năng tạo token tự động:

xpack.security.enabled: true
xpack.security.enrollment.enabled: true

SSL cho HTTP layer (cần có SSL 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 Sử dụng initContainers trong file Deployment để tạo token đăng ký cho Kibana và lưu nó vào một file để truy cập sau này. Dưới đây là file mẫu:

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 file cấu hình: initContainer token-generator: Đây là container chạy trước khi Elasticsearch khởi động. Nó tạo token bằng lệnh elasticsearch-create-enrollment-token và ghi token vào file /usr/share/elasticsearch/config/token/kibana-token.txt.

Volumes:

certs: Gắn bí mật chứa các chứng chỉ cần thiết. enrollment-token: Sử dụng emptyDir để lưu file token tạm thời. Volume Mounts: Gắn các volumes cần thiết vào các container để lưu chứng chỉ và file 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 chạy lệnh sau:

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

Điều này sẽ in ra enrollment token mà bạn có thể sử dụng để cấu hình Kibana.

Tổng kết initContainer sẽ tự động chạy lệnh tạo token trước khi Elasticsearch khởi động. File token được lưu vào volume tạm thời và có thể truy xuất từ bên ngoài. SSL/TLS vẫn cần được cấu hình nếu yêu cầu, hoặc có thể vô hiệu hóa tùy vào mục đích của bạn. Phương pháp này giúp tự động hóa quá trình tạo và lưu trữ token khi khởi động Elasticsearch lần đầu tiên trong môi trường Kubernetes.


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí