일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
- jwt토큰
- 캐시의 작동 원리
- 엘라스틱서치
- 스프링시큐리티
- 테스트케이스
- 하이브리드접근법
- 자바
- 오버로딩
- 티스토리챌린지
- 메소드
- N+1문제
- nplus1
- 한화시스템부트캠프
- Kafka
- 자동화워크플로우
- 헥사고날아키텍처
- springboot
- selenium
- 부트캠프
- 프로세스와스레드의차이
- Java
- STOMP
- XSS
- QA
- n8n
- JPA
- 자료구조
- kafka배포
- 프로토콜역할
- 오블완
- Today
- Total
아쿠의 개발 일지
[Network] SSL 인증서 적용 & K8S 클러스터 Ingress-nginx 활용 본문
전 게시글을 보시면 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 인증서를 적용 해 보시고, 안전한 개발하시길 바랍니다 ! 감사합니다 !
'Programming > CS' 카테고리의 다른 글
애플리케이션 설계란? (아키텍처 설계 ~ 설계 원칙) (0) | 2025.01.15 |
---|---|
운영체제(Operating System)의 핵심 개념 (0) | 2025.01.14 |
[Network] HTTP/HTTPS 차이점, SSL 인증서 다운로드 받기 (4) | 2025.01.07 |
[Security] UsernamePasswordAuthenticationFilter 인증 과정 (1) | 2025.01.02 |
[Security] JWT(JSON Web Token)토큰이란? (2) | 2024.12.31 |