Kubernetes Nginx HTTPs TLS/SSL Terminatation with Ingress

강재민·2022년 5월 25일
0

Kubernetes

목록 보기
13/29
post-thumbnail

Kubernetes Nginx HTTPs 서버 구축 실습


기본적으로 Pod를 여러 개 사용하게 되는데 그렇게 되면 각 Pod마다 인증서를 따로 관리를 해주어야한다. 그런 관리 어려움이 존재한다.
그리고 암호화 복호화 과정에서 cpu를 많이 사용하게 된다.

이번 실습을 이용하면 인증서는 LB에서만 관리해주면 된다.
다만 그래서 LB의 성능이 어느정도 중요해질 수 있다.
그리고 물론 내부 네트워크에서도 보안장비를 추가할 수 있다.
그러면 좀 더 안전한 구성이 가능하다.
즉, 보안을 선택적으로 구성할 수 있다는 장점이 있다.


YAML 파일

ingress-tls-secret.yaml

apiVersion: v1
kind: Secret
metadata:
  name: ingress-tls-secret
type: kubernetes.io/tls
data:
  # base64 x509/nginx-tls.crt -w 0
  tls.crt: |
    LS0tLS1CRUd...
  # base64 x509/nginx-tls.key -w 0
  tls.key: |
    LS0tLS1CRUdJ...

myweb-rs.yaml

apiVersion: apps/v1
kind: ReplicaSet
metadata:
  name: myweb-rs
spec:
  replicas: 3
  selector:
    matchLabels:
      app: web
      env: dev
  template:
    metadata:
      labels:
        app: web
        env: dev
    spec:
      containers:
        - name: myweb
          image: ghcr.io/c1t1d0s7/go-myweb
          ports:
            - containerPort: 8080
              protocol: TCP

myweb-svc-np.yaml

apiVersion: v1
kind: Service
metadata:
  name: myweb-svc-np
spec:
  type: NodePort
  selector:
    app: web
  ports:
    - port: 80
      targetPort: 8080

myweb-ing-tls.yaml

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: myweb-ing-tls
spec:
  tls:
    - hosts:
        - '*.nip.io'
      secretName: ingress-tls-secret
  rules:
    - host: '*.nip.io'
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: myweb-svc-np
                port:
                  number: 80
                  
                  
### https://nip.io/ 이렇게 구성하면 자동으로 앞에 오는 ip를 가리키는 도메인네임 주소가 된다.


tls 구성을 하면 자동으로 443포트가 열린다.

kubectl create -f .

결과 확인

curl -k https://192-168-100-100.nip.io

kubectl delete -f .

### 서비스들을 삭제시킨다.

0개의 댓글