Để cấu hình SSL cho Elasticsearch trong Kubernetes, bạn cần thay đổi file cấu hình với thông tin chính xác về dịch vụ của bạn. Dưới đây là hướng dẫn chi tiết để tạo chứng chỉ SSL và điều chỉnh cấu hình.
Bước 1: Tạo File Cấu Hình OpenSSL Tạo một file cấu hình OpenSSL, ví dụ openssl.cnf, với nội dung như sau:
[ req ]
default_bits = 2048
distinguished_name = req_distinguished_name
x509_extensions = req_ext
prompt = no [ req_distinguished_name ]
C = VN # Mã quốc gia
ST = VN # Tỉnh/Thành phố
L = VN # Địa phương
O = VN # Tên tổ chức
OU = Vn # Phòng ban
CN = elasticsearch-service.elks.svc.cluster.local # Tên DNS của dịch vụ [ req_ext ]
subjectAltName = @alt_names [ alt_names ]
DNS.1 = elasticsearch-service.elks.svc.cluster.local # Tên DNS chính
DNS.2 = elasticsearch-service # Tên DNS ngắn
Bước 2: Tạo Khóa và Chứng Chỉ Sử dụng lệnh sau để tạo khóa và chứng chỉ:
openssl req -x509 -new -nodes -key elasticsearch.key-sha256 -days 365 -out elasticsearch.crt -config openssl.cnf
Bước 3: Tạo Keystore PKCS#12 Chuyển đổi chứng chỉ và khóa thành định dạng PKCS#12:
openssl pkcs12 -export -out elasticsearch.p12 -inkey elasticsearch.key-sha256 -in elasticsearch.crt -passout pass:123456
Bước 4: Tạo Deployment File cho Elasticsearch Dưới đây là một ví dụ về file cấu hình deployment cho Elasticsearch sử dụng 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 env: - name: discovery.type value: single-node - name: ELASTIC_PASSWORD value: "123456d" - name: xpack.security.enabled value: "true" - name: xpack.security.http.ssl.enabled value: "true" - name: xpack.security.http.ssl.keystore.path value: "/usr/share/elasticsearch/config/certs/elasticsearch.p12" - name: xpack.security.http.ssl.keystore.password value: "123456d" - name: xpack.security.transport.ssl.enabled value: "true" - name: xpack.security.transport.ssl.verification_mode value: "certificate" - name: xpack.security.transport.ssl.keystore.path value: "/usr/share/elasticsearch/config/certs/elasticsearch.p12" - name: xpack.security.transport.ssl.keystore.password value: "123456d" ports: - containerPort: 9200 volumeMounts: - name: certs mountPath: /usr/share/elasticsearch/config/certs volumes: - name: certs hostPath: path: /path/to/certs # Đường dẫn trên host tới certs
Bước 5: Áp Dụng File Cấu Hình Đảm bảo rằng file chứng chỉ (elasticsearch.p12) đã được sao chép vào thư mục đúng trên máy chủ Kubernetes. Áp dụng file deployment: kubectl apply -f your-deployment-file.yaml Kết Luận Hãy thay đổi /path/to/certs thành đường dẫn thực tế tới file elasticsearch.p12 trên máy chủ của bạn. Nếu bạn có bất kỳ câu hỏi nào thêm hoặc gặp vấn đề gì trong quá trình này, hãy cho tôi biết nhé!