[kubernetes] ingress에 TLS/SSL 설정

Mr.Song·2022년 6월 30일
0

Docker / Kubernetes

목록 보기
7/13

인그레스로 SSL 인증서를 설정하면 파드 각각에 SSL 설정을 따로 할 필요가 없어 편하다.
SSL 인증서 기한이 만료되어도 인그레스에만 인증서를 업데이트하면 된다.

일반적으로 CA에서 인증서를 발급하여 사용하지만, 개인적으로는 테스트 목적이기때문에 사설 인증서를 생성하여 사용한다.

1. 인증서 생성

명령어 : openssl req -x509 -nodes -days (기한일수) -newkey rsa:2048 -keyout (키이름).key -out (키이름).crt

-- 인증서 생성
root@k8s-master1:~# openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout tls.key -out tls.crt -subj "/CN=kube-book.com"
Generating a RSA private key
.......................................+++++
..................+++++
writing new private key to 'tls.key'

-- 인증서 확인
root@k8s-master1:~# ls
tls.crt  tls.key

2. 시크릿 생성

1번에서 생성한 cert와key로 시크릿을 생성한다

명령어 : kubectl create secret tls (시크릿 이름) --key (키네임).key --cert (키네임).crt

-- 시크릿 생성
root@k8s-master1:~# kubectl create secret tls tlssecret --key tls.key --cert tls.crt
secret/tlssecret created 

-- 시크릿 확인
root@k8s-master1:~# kubectl get secrets tlssecret
NAME        TYPE                DATA   AGE
tlssecret   kubernetes.io/tls   2      2m30s

3. 인그레스 SSL 적용

.spec 하위 필드로 .tls[].secretName 필드에 시크릿 명을 설정한다.

root@k8s-master1:~# vi ingress-ssl.yaml

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: ingress-ssl
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
    kubernetes.io/ingress.class: nginx
spec:
  tls:
  - hosts:
    - localhost
    secretName: tlssecret
  rules:
  - host: localhost
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: s1
            port:
              number: 80
profile
정리를 못하면 기록이라도 하자!!

0개의 댓글