ingress-nginx-controller 를 적용 후에 https 로 브라우저에서 통신을 하면 아래와 같이 "Kubernetes Ingress Controller Fake Certificate" 인증서가 사용되게 된다.

이는 ingress controller 가 만든 기본 인증서이며, nginx pod 로 들어오는 모든 통신에 적용된다. 그렇다면 이 기본 인증서가 아닌 전용 인증서를 적용하려면 어떻게 할까? Ingress 에 tls Secret 을 적용하면 된다. nginx pod 와 ingress 에 모두 인증서가 존재하면 ingress 의 인증서만 사용되기 때문이다.
1. 사설 인증서 생성
https://secjong.tistory.com/130 를 참고하여 사설 인증서를 생성한다.
2. tls Secret 생성
아래와 같은 커맨드로 쿠버네티스 클러스터의 특정 네임스페이스에 tls 타입의 Secret 을 생성한다.
// tls 타입 Secret 생성
$ kubectl -n sample-ns create secret tls sample-tls-secret --key=tls.key --cert=tls.crt
// 확인
$ kubectl -n sample-ns get secret sample-tls-secret -o yaml
3. Ingress 에 tls 적용
아래와 같은 커맨드로 적용할 Ingress 를 수정하여 spec.tls[].secretName 에 Secret 이름과 spec.tls[].hosts[] 에 적용할 도메인 목록을 지정한다.
$ kubectl -n sample-ns edit ingress sample-portal-ingress
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
...
spec:
ingressClassName: nginx
rules:
- host: portal.com
http:
paths:
- backend:
service:
name: portal-api
port:
number: 80
path: /
pathType: Prefix
# 아래 부분을 추가
tls:
- hosts:
- portal.com
secretName: sample-tls-secret
...
4. 확인
다시 동일한 주소로 접속해보면 해당 도메인의 전용 인증서로 나타난다.

참고로, Ingress 에 tls 를 적용하게 되면, 자동으로 ssl-redirect: "true" 가 기본값으로 적용된다. 따라서, http 로 요청시 자동으로 443 포트(즉, https 로) 리다이렉션 된다. 만약 이러한 리다이렉션을 하지 않기 위해서는 아래처럼 명시적으로 ssl-redirect: "false" 를 설정해야 한다.
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
annotations:
nginx.ingress.kubernetes.io/ssl-redirect: "false"'Kubernetes' 카테고리의 다른 글
| [KUBERNETES] Ingress 에서 http 요청을 https + 특정 포트로 리다이렉트 하기 (0) | 2026.07.29 |
|---|---|
| [KUBERNETES] Ingress 에서 SSL Redirect 하기 (0) | 2026.07.29 |
| [KUBERNETES] Ingress 와 IngressController (feat. nginx) (0) | 2026.07.26 |
| [KUBERNETES] nginx ingress controller 의 두가지 버전 링크 정리 (0) | 2026.07.26 |
| [KUBERNETES] Pod 에서 특정 도메인을 IP 에 매핑하기 (0) | 2026.07.21 |