

위와 같이 Running 상태의 Pod가 보이면 cert-manager와 ingress-nginx가 성공적으로 설치된 것입니다.
$ kubectl get pods -n cert-manager
$ kubectl get pods -n ingress-nginx
$ vim deploy-service.yaml
//
---
apiVersion: v1
kind: Service
metadata:
name: nginx-service-01
namespace: ingress-nginx
spec:
type: LoadBalancer
selector:
app: nginx
ports:
- port: 80
targetPort: 80
protocol: TCP
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
namespace: ingress-nginx
spec:
replicas: 2
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:latest
ports:
- containerPort: 80
protocol: TCP
//
yaml파일 작성

Service, Deployment/Pod 배포
$ vim ingress.yaml
//
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: nginx-ingress
namespace: ingress-nginx
annotations:
# 리다이렉트를 활성화하는 어노테이션
nginx.ingress.kubernetes.io/force-ssl-redirect: "true"
# ClusterIssuer 참조
cert-manager.io/cluster-issuer: letsencrypt-prod
spec:
ingressClassName: nginx
tls:
- hosts:
# 내 도메인
- ksb-test.r-e.kr
# TLS 인증서를 저장할 Secret
secretName: ksb-test.r-e.kr-tls
rules:
- host: ksb-test.r-e.kr
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: nginx-service-01
port:
number: 80
//
yaml파일 작성

Ingress 배포

아직 Issuer(nginx-issuer)가 없는 상태이기 때문에 Issuing 상태 및 Ready:False 상태를 가진 Certificate가 생성됩니다.

기존에 존재하는 Secret이 없기 때문에 임시로 임시 Private Key를 생성합니다. 그 결과 아래와 같이 Secret이 생성됩니다.

- Certificate가 인증받기 위한 요청을 처리하기 위해 CertificateRequest 오브젝트를 자동으로 생성합니다. 이 때 Secret의 Private Key를 통한 PEM encoded 정보가 Request에 포함됩니다.
- 이 역시 아직 Issuer가 존재하지 않기 때문에, Pending 상태로 유지됩니다.
$ vim clusterissuer.yaml
//
apiVersion: cert-manager.io/v1
kind: Issuer
metadata:
name: letsencrypt-prod
spec:
acme:
server: https://acme-v02.api.letsencrypt.org/directory
email: giroro3527@gmail.com
privateKeySecretRef:
name: letsencrypt-prod
solvers:
- http01:
ingress:
ingressClassName: nginx
//
yaml파일 작성
- 인증을 위해 CA 서버로 Let’s Encrypt(https://letsencrypt.org/)를 사용합니다.
- Let’s Encrypt는 staging/production이 구분되어 있습니다.
- 일정 시간 내 여러번 인증서를 요청하는 경우 일정 시간 내에는 인증서 발급이 제한되므로 테스트시에는 staging 경로를 사용할 수 있도록 합니다.

issuer 생성