Hướng Dẫn Cấu Hình SSL cho Elasticsearch trên Nền Tảng Kubernetes
Để đảm bảo tính bảo mật cho dịch vụ Elasticsearch chạy trên Kubernetes, việc cấu hình SSL là rất cần thiết. Bài viết này sẽ hướng dẫn bạn từng bước trong việc tạo chứng chỉ SSL và cấu hình dịch vụ một cách chính xác.
Bước 1: Tạo File Cấu Hình OpenSSL
Trước tiên, bạn cần tạo một file cấu hình cho OpenSSL. Hãy tạo một file có tên là 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: Chuyển Đổi Sang Định Dạng PKCS#12
Để chuyển đổi chứng chỉ và khóa thành định dạng PKCS#12, hãy sử dụng lệnh sau:
openssl pkcs12 -export -out elasticsearch.p12 -inkey elasticsearch.key-sha256 -in elasticsearch.crt -passout pass:123456
Bước 4: Tạo File Cấu Hình Deployment cho Elasticsearch
Tiếp theo, bạn cần tạo một file cấu hình deployment cho Elasticsearch với SSL. Dưới đây là ví dụ:
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
Sau khi đã sao chép file chứng chỉ elasticsearch.p12
vào thư mục đúng trên máy chủ Kubernetes, bạn hãy áp dụng file deployment bằng lệnh:
kubectl apply -f your-deployment-file.yaml
Kết Luận
Hãy nhớ 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 hoặc gặp vấn đề trong suốt quá trình cấu hình, đừng ngần ngại liên hệ để được hỗ trợ!
source: viblo