사용자 요청처리요약
virtualbox
kubernetes
cert-manager
Client
① helloworld.com
IP 질의
② 집공유기 IP리턴
③ 서비스 요청
④ 포트포워딩
⑤ 응답
① 사용자가 요청한 도메인(예: helloworld.com)에 대한 IP질의
② 도메인에 해당하는 IP리턴(이 실습에서는 집 공유기 IP사용)
③ IP로 서비스를 요청하면 공유기가 쿠버네티스 ingress로 포트포워딩
④ ingress는 서비스를 처리하고 응답
집공유기
컴퍼넌트
① Issuer:인증서 주체
② certificates: 인증서 정의
③ secret: 발급된 인증서와 비밀키 저장
①
②
③
※ 공식문서: https://cert-manager.io/docs/
10.
컴퍼넌트
※ self-signedissuer: https://cert-manager.io/docs/configuration/selfsigned/
▪ 대표적인 2개 Issuer: self-signed, let's encrypt
apiVersion: cert-manager.io/v1
kind: Issuer
metadata:
name: selfsigned-issuer
namespace: sandbox
spec:
selfSigned: {}
apiVersion: cert-manager.io/v1
kind: Issuer
metadata:
name: letsencrypt-staging
spec:
acme:
# The ACME server URL
server: https://acme-staging-v02.api.letsencrypt.org/directory
# Email address used for ACME registration
email: user@example.com
# Name of a secret used to store the ACME account private key
privateKeySecretRef:
name: letsencrypt-staging
# Enable the HTTP-01 challenge provider
solvers:
- http01:
ingress:
class: nginx
<self-signed issuer>
<let's encrypt issuer>
※ let's encrypt issuer: https://cert-manager.io/docs/tutorials/acme/ingress/#step-6-configure-let-s-encrypt-issuer
11.
컴퍼넌트
▪ issuer는issuer와 clusterissuer로 분류
▪ issuer: 같은 namespace만 인증서 참조 가능
▪ clusterissuer: 모든 namespace에서 참조 가능
12.
컴퍼넌트
※ 공식문서:https://cert-manager.io/docs/tutorials/acme/ingress/#step-6-configure-let-s-encrypt-issuer
▪ Issuer은 stage, prod환경으로 분리
▪ stage: 테스트
▪ prod: 운영
13.
컴퍼넌트
※ 공식문서:https://cert-manager.io/docs/concepts/certificate/
▪ certificates는 인증서 발급에 대한 명세를 정의
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
name: acme-crt
spec:
secretName: acme-crt-secret
dnsNames:
- foo.example.com
- bar.example.com
issuerRef:
name: letsencrypt-prod
# We can reference ClusterIssuers by changing the kind here.
# The default value is Issuer (i.e. a locally namespaced Issuer)
kind: Issuer
group: cert-manager.io