Ingress에 TLS 인증서를 적용하는 경우가 종종 있습니다. 이때, 일반적으로 패스워드가 없는 TLS 인증서를 사용하면 쉽게 Secrets으로 생성 가능하지만, 패스워드가 있는 경우에는 정상적으로 생성이 되지 않습니다.
해당 내용은 특정 고객사에서 필요한 요구사항이 있어, 해결 방법을 찾다가 함께 알아두면 좋을 것 같아 공유드립니다.
일반적으로 인증서를 발급받으면 다음과 같은 3가지 파일이 있습니다.
이때, Ingress 에 인증서를 적용하기 위해서는 인증서 (cert.pem)와 비밀키 (key.pem) 파일이 필요합니다.
key.pem 으로 바로 Secret 을 생성하려고 하면 오류가 발생합니다. 다음과 같이 key.pem 자체가 암호화 되어있는 경우, SSL 인증서 발급시 받은 패스워드로 해제해주면 됩니다.
openssl rsa -in key.pem -out key.unencrypted.pem -passin pass:<발급당시 비밀번호>
이제 accordion-tls 라는 이름의 secret 을 생성합니다. 이 때, 암호가 풀린 key.unencrypted.pem 을 사용하면 됩니다.
kubectl create secret tls accordion-tls --cert cert.pem --key key.unencrypted.pem
인증서의 도메인이 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으로 등록하는 방법을 알아보았습니다.
추가적으로 궁금한 사항 또는 잘못된 부분이 있다면 언제든 피드백 부탁드립니다.