Để 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!