기본적으로 Pod를 여러 개 사용하게 되는데 그렇게 되면 각 Pod마다 인증서를 따로 관리를 해주어야한다. 그런 관리 어려움이 존재한다.
그리고 암호화 복호화 과정에서 cpu를 많이 사용하게 된다.
이번 실습을 이용하면 인증서는 LB에서만 관리해주면 된다.
다만 그래서 LB의 성능이 어느정도 중요해질 수 있다.
그리고 물론 내부 네트워크에서도 보안장비를 추가할 수 있다.
그러면 좀 더 안전한 구성이 가능하다.
즉, 보안을 선택적으로 구성할 수 있다는 장점이 있다.
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 .
### 서비스들을 삭제시킨다.