TIL
[k8s] Ingress SSL 적용
s00ng
2024. 10. 6. 23:45
윈도우 VMware 가상머신에 직접 k8s를 설치하고, 클러스터 구성을 마친 상태에서 진행한 실습이다. 이번 포스팅에서는 Ingress에 SSL을 적용한 방식을 적어보려한다.
LoadBalancer
NodePort의 접근 범위뿐만 아니라 쿠버네티스 클러스터 외부에서 대표 IP주소로 접근할 수 있다.
쿠버네티스 클러스터 환경을 직접 구축했다면 기본적으로 LoadBalancer 타입은 제공되지 않는다.
추가적으로 플러그인 설치 필요
[1] 플러그인 설치 (네트워크 대역은 가상머신 대역)
https://mlops-for-all.github.io/docs/appendix/metallb/
1️⃣ ingress controller 생성
nginx ingress controller 사용
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.11.2/deploy/static/provider/cloud/deploy.yaml
2️⃣ zeroSSL 인증서 발급
내도메인 한국 ⇒ 도메인 발급
⇒ 여기서 다운받은 certification.cert, ca_bundle.crt, private.key 를 클러스터 노드로 이동(scp)
scp <파일경로> <접속할 사용자 계정>@<접속할 ip>:<파일 옮길 경로>
3️⃣ Secret key 생성
kubectl create secret tls (시크릿 이름) --key (키네임).key --cert (키네임).crt
//ex kubectl create secret tls tls-secret --key private.key --cert certification.cert
cat certificate.crt ca_bundle.crt > fullchain.crt (certificate.crt 와 ca_bundle.crt를 합치는 과정)
⇒ 대시보드에서 secret key 생성확인
4️⃣ Ingress 객체 생성(설정 파일)
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: dealivery-ingress
namespace: default
spec:
ingressClassName: "nginx"
tls:
- hosts:
- www.dealivery.kro.kr
secretName: tls-secret
rules:
- host: www.dealivery.kro.kr
http:
paths:
- path: /api/oauth
pathType: Prefix
backend:
service:
name: backend-service-oauth
port:
number: 8080
- path: /api
pathType: Prefix
backend:
service:
name: backend-service
port:
number: 8080
- path: /
pathType: Prefix
backend:
service:
name: frontend-service
port:
number: 80