<aside> 👨💻 아마 모든 yaml을 delete했다가 다시 apply하면 기존 로그인 정보가 사라질 것이다. (ex. 키바나 접속하면 다시 토큰인증해야함) 이부분은 개선이 필요하다.
</aside>
elasticsearch-statefulset.yaml
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: elasticsearch # StatefulSet의 이름
namespace: devops-tools # 네임스페이스 지정
labels:
app: elasticsearch # 라벨 설정
spec:
replicas: 1 # 복제본 수
selector:
matchLabels:
app: elasticsearch # Pod를 선택할 라벨
template:
metadata:
labels:
app: elasticsearch # Pod 템플릿의 라벨
spec:
containers:
- name: elasticsearch # 컨테이너 이름
image: elastic/elasticsearch:8.13.3 # 사용할 이미지 및 버전
env:
- name: discovery.type
value: single-node # 노드 발견 유형 설정
- name: ELASTIC_PASSWORD
value: "elk" # 엘라스틱서치 비밀번호 설정
- name: ES_JAVA_OPTS
value: "-Xms500m -Xmx1000m" # JVM 옵션 설정
- name: xpack.security.transport.ssl.enabled
value: "false" # xpack 보안 전송 SSL 활성화
- name: xpack.security.enrollment.enabled
value: "true" # kibana 토큰 인증 활성화
ports:
- containerPort: 9200 # 컨테이너에서 노출할 포트
volumeMounts:
- name: elastic-data
mountPath: /usr/share/elasticsearch/data # 데이터 디렉토리를 마운트할 경로
volumes:
- name: elastic-data
emptyDir:
sizeLimit: 5Gi # 볼륨의 최대 크기
개인 키 (Private Key) 생성: 먼저 개인 키를 생성해야 합니다. 다음 명령어를 사용하여 개인 키를 생성합니다.
openssl genrsa -out server.key 2048
이 명령은 2048비트 RSA 개인 키를 server.key
파일에 생성합니다.
CSR (Certificate Signing Request) 생성: 다음으로 CSR 파일을 생성합니다. 이 파일은 인증 기관에서 서명된 인증서를 발급받기 위해 사용됩니다.
openssl req -new -key server.key -out server.csr
이 명령은 server.key
를 사용하여 CSR 파일 server.csr
을 생성합니다.
인증서 생성: CSR을 기반으로 자체 서명된 인증서를 생성합니다.
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
이 명령은 365일 동안 유효한 자체 서명된 인증서를 생성하고, server.csr
파일을 사용하여 서명하며, 결과를 server.crt
파일에 저장합니다.
P12 파일 생성: 생성된 개인 키와 인증서를 결합하여 P12 파일을 생성합니다.
openssl pkcs12 -export -out elasticsearch.keystore.p12 -inkey server.key -in server.crt
이 명령은 server.key
와 server.crt
를 사용하여 P12 파일 elasticsearch.keystore.p12
을 생성합니다.
cat elasticsearch.keystore.p12 | base64
elasticsearch-ssl
은 시크릿의 이름이고, devops-tools
는 해당 시크릿이 속하는 네임스페이스입니다. 또한 elasticsearch.keystore.p12
는 시크릿 내부에 저장될 키의 이름입니다.apiVersion: v1
kind: Secret
metadata:
name: elasticsearch-ssl
namespace: devops-tools
data:
elasticsearch.keystore.p12: [여기에 base64로 인코딩한 내용 붙여넣기]