127.0.0.1 salgu.com
sudo vi /etc/hosts
명령어를 이용하여 host를 추가해줍니다.
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout tls.key -out tls.crt -subj "/CN=salgu.com/0=ihp001"
DNS에 등록해주었던 Domain으로 인증서와 비밀키를 생성해줍니다.
cat tls.key | base64
cat tls.crt | base64
Kubernetes의 Secret Manifest에 등록해주기 위해 .key와 .crt 파일을 base64로 인코딩한 값을 저장해줍니다.
apiVersion: v1
kind: Secret
metadata:
name: tls-secret
namespace: core
type: kubernetes.io/tls
data:
tls.key: <인코딩된 .key>
tls.crt: <인코딩된 .crt>
kubectl apply -f <Secret Manifest>
Secret Manifest 작성한 뒤 쿠버네티스에 적용시켜줍니다.
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: ingress
namespace: core
labels:
app: ingress
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /$2
kubernetes.io/ingress.class: "nginx"
spec:
tls:
- secretName: tls-secret
rules:
- http:
paths:
- pathType: Prefix
path: /auth(/|$)(.*)
backend:
service:
name: auth
port:
number: 18081
spec.tls.secretName
에 적용했던 Secret을 적용시켜주면 정상적으로 SSL 설정이 적용되게 됩니다.
get 명령어로 ingress를 조회하면 PORTS에 443 포트가 열린것을 확인할 수 있습니다.
https로 요청을 보내게 되면 정상적으로 응답이 옵니다.
Ingress는 Service 추상화하였고 의미있는 단일 엔드포인트 제공합니다.
클라이언트는 클러스터 안에 있는 여러 Service를 하나의 엔드포인트에 접근할 수 있고 SSL/TLS 인증서를 쉽게 관리할 수 있습니다.
reference:
- https://www.cloudflare.com/ko-kr/learning/ssl/what-is-ssl/
- 시작하세요! 도커/쿠버네티스
덕분에 좋은 정보 얻어갑니다, 감사합니다.