kube-lego

Kube-Lego

Kube-Lego는 Kubernetes Ingress 에서 Let's Encrypt 인증서를 생성하고 자동으로 갱신해주는 툴이다.
helm을 통해서 손쉽게 설치 할수 있어서 그 내용을 공유한다.

setup

helm init

install nginx-ingress

ingress를 설정하기 전에 우선 ingress-controller를 설치해야 한다.
나는 nginx를 이용한다.

helm install --name [관리할이름] stable/nginx-ingress

install kube-lego

helm install --name [관리할이름] --set config.LEGO_EMAIL=[연락받을이메일],config.LEGO_URL=https://acme-v01.api.letsencrypt.org/directory stable/kube-lego

create service

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

Check External IP

아래 명령어를 이용해 외부IP를 확인한다.
외부IP를 사용하고자 하는 DNS로 등록한다.

kubectl get service --selector='app=nginx-ingress,component=controller'

create ingress

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

create deployment

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

Check

아래 처럼 브라우저를 열었을때 자동적으로 https로 리다이렉팅이 되면 잘 적용된 상태이다.

open http://my.example.com