[K8s] Ingress에 패스워드 있는 TLS 인증서 적용방법

유형욱·2022년 1월 21일
0

K8s

목록 보기
1/4
post-thumbnail

개요

Ingress에 TLS 인증서를 적용하는 경우가 종종 있습니다. 이때, 일반적으로 패스워드가 없는 TLS 인증서를 사용하면 쉽게 Secrets으로 생성 가능하지만, 패스워드가 있는 경우에는 정상적으로 생성이 되지 않습니다.

해당 내용은 특정 고객사에서 필요한 요구사항이 있어, 해결 방법을 찾다가 함께 알아두면 좋을 것 같아 공유드립니다.

본문

일반적으로 인증서를 발급받으면 다음과 같은 3가지 파일이 있습니다.

1. 파일목록

  • DigiCertCA.pem
  • cert.pem
  • key.pem

이때, Ingress 에 인증서를 적용하기 위해서는 인증서 (cert.pem)와 비밀키 (key.pem) 파일이 필요합니다.

2. 비밀키 비밀번호 해제

key.pem 으로 바로 Secret 을 생성하려고 하면 오류가 발생합니다. 다음과 같이 key.pem 자체가 암호화 되어있는 경우, SSL 인증서 발급시 받은 패스워드로 해제해주면 됩니다.

openssl rsa -in key.pem -out key.unencrypted.pem -passin pass:<발급당시 비밀번호>

3. Secret 생성

이제 accordion-tls 라는 이름의 secret 을 생성합니다. 이 때, 암호가 풀린 key.unencrypted.pem 을 사용하면 됩니다.

kubectl create secret tls accordion-tls --cert cert.pem --key key.unencrypted.pem

4. Ingress 적용

인증서의 도메인이 accordion.co.kr 일 경우 다음과 같이 Ingress YAML을 작성하면 됩니다.

apiVersion: networking.k8s.io/v1beta1
 kind: Ingress
 metadata:
   name: accordion-ingress
   annotations:
     kubernetes.io/ingress.class: "nginx"
 spec:
   rules:
 host: accordion.co.kr
 http:
   paths:
 path: /
 backend:
   serviceName: accordion-frontend-svc
   servicePort: 80
 path: /api
 backend:
   serviceName: accordion-backend-svc
   servicePort: 80
 tls:
 - hosts:
   - accordion.co.kr
   secretName: accordion-tls 

이렇게 간략하게 패스워드가 있는 TLS 인증서를 Ingress Secrets으로 등록하는 방법을 알아보았습니다.

추가적으로 궁금한 사항 또는 잘못된 부분이 있다면 언제든 피드백 부탁드립니다.

profile
DevOps를 꿈꾸는 엔지니어 입니다.

0개의 댓글