<aside> 👨‍💻 아마 모든 yaml을 delete했다가 다시 apply하면 기존 로그인 정보가 사라질 것이다. (ex. 키바나 접속하면 다시 토큰인증해야함) 이부분은 개선이 필요하다.

</aside>

1. elastic search

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 # 볼륨의 최대 크기

ssl 인증서 적용해보기

  1. 개인 키 (Private Key) 생성: 먼저 개인 키를 생성해야 합니다. 다음 명령어를 사용하여 개인 키를 생성합니다.

    openssl genrsa -out server.key 2048
    

    이 명령은 2048비트 RSA 개인 키를 server.key 파일에 생성합니다.

  2. CSR (Certificate Signing Request) 생성: 다음으로 CSR 파일을 생성합니다. 이 파일은 인증 기관에서 서명된 인증서를 발급받기 위해 사용됩니다.

    openssl req -new -key server.key -out server.csr
    

    이 명령은 server.key를 사용하여 CSR 파일 server.csr을 생성합니다.

  3. 인증서 생성: CSR을 기반으로 자체 서명된 인증서를 생성합니다.

    openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
    

    이 명령은 365일 동안 유효한 자체 서명된 인증서를 생성하고, server.csr 파일을 사용하여 서명하며, 결과를 server.crt 파일에 저장합니다.

  4. P12 파일 생성: 생성된 개인 키와 인증서를 결합하여 P12 파일을 생성합니다.

    openssl pkcs12 -export -out elasticsearch.keystore.p12 -inkey server.key -in server.crt
    

    이 명령은 server.keyserver.crt를 사용하여 P12 파일 elasticsearch.keystore.p12을 생성합니다.

P12 파일을 Kubernetes 시크릿(Secret)으로 추가하는 방법1

  1. 먼저, P12 파일을 base64로 인코딩합니다. 이를 위해 다음 명령어를 사용합니다:
cat elasticsearch.keystore.p12 | base64

Untitled

  1. 이제 YAML 파일을 작성하여 시크릿을 정의합니다. 다음과 같이 작성할 수 있습니다:
apiVersion: v1
kind: Secret
metadata:
  name: elasticsearch-ssl
  namespace: devops-tools
data:
  elasticsearch.keystore.p12: [여기에 base64로 인코딩한 내용 붙여넣기]
  1. YAML 파일을 사용하여 시크릿을 생성합니다: