아쿠의 개발 일지

[Network] SSL 인증서 적용 & K8S 클러스터 Ingress-nginx 활용 본문

Programming/CS

[Network] SSL 인증서 적용 & K8S 클러스터 Ingress-nginx 활용

디아쿠 2025. 1. 8. 12:16

 

전 게시글을 보시면 HTTPS를 사용해야 하는 이유와 SSL 인증서를 다운로드 받고, Key 파일에 대해서 설명을 드렸습니다.

 

이 키를 사용하여, 인증서를 생성하기 위해 K8S 환경을 만들어놓은 master 계정으로 접속 했습니다.

key파일을 옮기기 위해서 FileZilla를 사용하게 되었는데, 이 프로그램을 사용하여 C드라이브에 있는 파일을 K8S 환경으로 옮기는 작업을 진행 했습니다.

 

물론 내부에서도 가능하지만, 프로그램을 사용하면 손 쉽게 가능하기에 전 아래와 같은 방법을 선택 했습니다.

 

https://filezilla-project.org/

 

위에서 다운로드 받으시면 됩니다.

 

이제 옮기셨으면, 아래를 따라해주세요 !

 

1. 인증서 파일을 준비한다.

 

위에 앞서 말 했던 것 처럼 key 파일을 옮긴 폴더 안으로 가시면,

인증서 파일은

certificate.crt, ca_bundle.crt, private.key로 존재합니다. 이 3가지 파일이 준비되어 있어야 합니다!

 

2. 인증서 파일을 병합한다.

cat certificate.crt ca_bundle.crt > fullchain.crt

 

이 명령어는 서버 인증서와 CA 번들을 하나의 파일인 fullchain.crt로 병합하는 것이다. 이는 SSL 인증서를 제대로 검증하기 위해서 필요하고, fullchain.crt 파일은 클라이언트가 서버의 SSL 인증서를 신뢰할 수 있도록 모든 필요한 중간 인증서를 포함합니다.

 

3. Secret 생성

kubectl create secret tls tls-secret --cert=fullchain.crt --key=private.key -n default

 

default 네임 스페이스에 tls-secret 라는 이름의 TLS Secret를 생성합니다. 

 

4. Ingress 리소스 설정 확인

 

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: calit-ingress
  namespace: default
spec:
  ingressClassName: "nginx"
  tls:
    - hosts:
        - www.calit.kro.kr
      secretName: tls-secret
  rules:
    - host: www.calit.kro.kr
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: frontend-svc
                port:
                  number: 80
          - path: /api
            pathType: Prefix
            backend:
              service:
                name: backend-svc
                port:
                  number: 8080

 

예시를 보여드리겠습니다. 위에 tls 하위에 secretName 에 있는 tls-secret가 제가 생성한 key 파일입니다.

 

1. ingressClassName: "nginx": ingress-nginx 컨트롤러를 사용하도록 지정합니다.

2. tls: TLS 설정을 정의하며, www.calit.kro.kr 호스트에 대해 tls-secret을 사용하도록 지정합니다.

3. rules: HTTP 및 HTTPS 요청을 해당 서비스로 라우팅합니다.

 

혹여나 ingress 리소스를 수정했거나, 새로 생성한 경우 Kubernetes 클러스터에 적용 하기 위해서는

kubectl apply -f calit-ingress.yaml

 

명령어를 통해 적용할 수 있습니다.

 

이제 브라우저에서 [https:// 도메인 주소] 에 접근하여 SSL 인증서가 올바르게 적용 됐는지 시각적으로 확인 가능합니다.

 

다들 K8S 환경에서 SSL 인증서를 적용 해 보시고, 안전한 개발하시길 바랍니다 ! 감사합니다 ! 

728x90