본문 바로가기

Study/Docker & Kubernetes

로컬 개발 환경(rancherdekstop k8s traefik ingress)에서 https 사용해 보기

반응형

이전 글에서 mkcert 를 사용하여 *.pem , *-key.pem 인증서를 생성하여 로컬 개발 환경에서 https proptocal로 사용하였었다.

내 경우 로컬에서 rancher-desktop 으로 kubernetes 에서 ingress (traefik) 를 사용하고 있는데 이에 대해서도 https 로 설정을 진행해 보았다.

TLS Secret 생성

이전 글에서 다음과 같이 java project에서 사용할 *.p12 인증서 파일을 -pkcs12 옵션을 사용하여 생성하였다.

[[Window 개발 환경에서 https로 Spring Boot Application 개발하기]]

mkcert -pkcs12 "*.bluesky.local" "*.cloud.bluesky.local" "*.api.bluesky.local" "*.web.bluesky.local"

k8s에는 *.pem 인증서 파일을 사용한다.

다음과 같이 기존에 생성했던 인증서 사용에 -pkcs12 옵션만 빼고 실행하면 해당 인증서가 생성된다.

mkcert "*.bluesky.local" "*.cloud.bluesky.local" "*.api.bluesky.local" "*.web.bluesky.local"

해당 인증서로 다음과 같이 kubernetes secret 을 생성한다.

내 경우 tls-secret 이란 이름으로 생성하였다.

kubectl create secret tls tls-secret --cert=_wildcard.bluesky.local+3.pem --key=_wildcard.bluesky.local+3-key.pem

kubectl create secret -n argocd tls tls-secret --cert=_wildcard.bluesky.local+3.pem --key=_wildcard.bluesky.local+3-key.pem

다음과 같이 확인할 수 있다.

kubectl get secret

Ingress 설정 TLS 활성화

기존 Ingress 설정에 tls 설정만 추가하면 된다.
예를 들면 다음과 같다.

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: bluesky-cloud-admin-server-ingress
spec:
  ingressClassName: traefik
  rules:
    - host: admin.cloud.bluesky.local
      http:
        paths:
          - backend:
              service:
                name: bluesky-cloud-admin-server-service
                port:
                  number: 30102
            path: /
            pathType: Prefix
  tls:
    - secretName: tls-secret

해당 도메인이 hosts에 설정되어 있고 기존에 http에서 https로 변경해서 호출해도 잘 되는 것을 확인할 수 있다.


(브라우저에서 테스트할 때 새로 고침으로 바로 반영이 안 되고 새 탭에서 호출하면 적용이 되었다.)

반응형