Cấu Hình SSL Cho 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:
yaml Copy code
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:
yaml Copy code
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:
bash
Copy code
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