개요

Kubernetes에서 Ingress에 SSL을 붙이는 방법을 정리 한 뒤 공유한다.

핵심개념

Kubernetes에서는 Secret이라는 개념으로 key와 crt를 등록한다. 이후 ingress에서는 secret을 정의해주면 SSL 통신이 활성화 된다.

Secret 만들기

아래의 명령어로 secret을 동록한다.

$ kubectl create secret tls star-kwangsiklee-com --key star.kwangsiklee.com.key --cert star.kwangsiklee.com.crt

이후 아래 명령어로 secret이 정상적으로 등록되었는지 확인이 가능하다.

$ kubectl describe secret star-kwangsiklee-com
Name:         star-kwangsiklee-com
Namespace:    default
Labels:       <none>
Annotations:  <none>

Type:  kubernetes.io/tls

Data
====
tls.crt:  2320 bytes
tls.key:  1704 bytes

ingress 편집

아래와 같이 spec -> tls 부분으로 secret을 정의해주면 된다.

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: kwangsiklee-ingress
  namespace: default
  annotations:
    ingress.kubernetes.io/rewrite-target: /
spec:
  tls:
  - hosts:
    - www.kwangsiklee.com
    secretName: star-kwangsiklee-com
  rules:
  - host: www.kwangsiklee.com
    http:
      paths:
      - path: /
        backend:
          serviceName: kwangsiklee-svc
          servicePort: 5000

kubectl 명령어로 이제 새로 바뀐 ingress를 실행해보자.

$ kubectl apply -f ingress.yaml

검증하기

아래와 같이 https로 접속했을때 정상 접속이 되면 성공이다.
(아래 URL은 예시를 든것이고 해당 블로그는 kubernetes와 관계는 없다.)

$ curl https://www.kwangsiklee.com