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