Kube-Lego는 Kubernetes Ingress 에서 Let's Encrypt 인증서를 생성하고 자동으로 갱신해주는 툴이다.
helm을 통해서 손쉽게 설치 할수 있어서 그 내용을 공유한다.
helm init
ingress를 설정하기 전에 우선 ingress-controller를 설치해야 한다. 나는 nginx를 이용한다.
helm install --name [관리할이름] stable/nginx-ingress
helm install --name [관리할이름] --set config.LEGO_EMAIL=[연락받을이메일],config.LEGO_URL=https://acme-v01.api.letsencrypt.org/directory stable/kube-lego
service.yaml
apiVersion: v1
kind: Service
metadata:
name: some-service
spec:
selector:
app: some-application
type: NodePort
ports:
- port: 8080
kubectl create -f service.yaml
아래 명령어를 이용해 외부IP를 확인한다.
외부IP를 사용하고자 하는 DNS로 등록한다.
kubectl get service --selector='app=nginx-ingress,component=controller'
ingress.yaml
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: my-ingress
annotations:
kubernetes.io/ingress.class: nginx
kubernetes.io/tls-acme: 'true'
spec:
tls:
- secretName: my-tls
hosts:
- my.example.com
rules:
- host: my.example.com
http:
paths:
- path: /
backend:
serviceName: some-service
servicePort: 8080
kubectl create -f ingress.yaml
deploy.yaml
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: application-deployment
spec:
replicas: 2
template:
metadata:
labels:
app: some-application
spec:
containers:
- name: some-app
image: [이미지]
ports:
- containerPort: 8080
kubectl create -f deploy.yaml
아래 처럼 브라우저를 열었을때 자동적으로 https로 리다이렉팅이 되면 잘 적용된 상태이다.
open http://my.example.com