SlideShare a Scribd company logo
cert-manger로
Let's encrypt 인증서 생성
- 온프레미스 환경
이 문서는 쿠버네티스 설치, 도메인 설정, cert-manager 설치를 다루지 않습니다.
개요
 사용이유
▪ self-signed 인증서의 불편함
▪ 인증기관의 인증서가 아니면 수동설정이 빈번
서비스
① self-signed 인증서로 통신할게!
오픈소스
② 거절
③ 클라이언트 설정 ④ 오픈소스 설정
예상보다 많은 시간을 잡아먹음
 사용이유
▪ Let's encrypt에서 무료 인증서 발급해주고
▪ cert-manager에서 인증서 생성&관리
acme 프로토콜 통신
이게 뭐지?
① ssl인증서 신청
② ssl인증서 생성
 장점
▪ yaml파일로 인증서 생성&관리
▪ 인증서 만료 전 자동 갱신
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: nginx-test
annotations:
kubernetes.io/ingress.class: "nginx"
cert-manager.io/issuer: "prod"
spec:
tls:
- hosts:
- abcd.choilab.xyz
secretName: stage-test-prod-1
rules:
- host: abcd.choilab.xyz
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: nginx-test
port:
number: 80
virtualbox
kubernetes
cert-manager
① ssl인증서 신청
② ssl인증서 생성
도메인 관리
③ 인증서
사용
 인증서 생성과정 요약
▪ 도메인 관리: 가비아
▪ 네임서버 관리: cloudflare
▪ 인증서 생성: let's encrypt
▪ 쿠버네티스 인증서 관리: cert-manager
 사용자 요청처리 요약
virtualbox
kubernetes
cert-manager
Client
① helloworld.com
IP 질의
② 집공유기 IP리턴
③ 서비스 요청
④ 포트포워딩
⑤ 응답
① 사용자가 요청한 도메인(예: helloworld.com)에 대한 IP질의
② 도메인에 해당하는 IP리턴(이 실습에서는 집 공유기 IP사용)
③ IP로 서비스를 요청하면 공유기가 쿠버네티스 ingress로 포트포워딩
④ ingress는 서비스를 처리하고 응답
집공유기
cert-manager 컴퍼넌트
 컴퍼넌트
① Issuer: 인증서 주체
② certificates: 인증서 정의
③ secret: 발급된 인증서와 비밀키 저장
①
②
③
※ 공식문서: https://cert-manager.io/docs/
 컴퍼넌트
※ self-signed issuer: 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
 컴퍼넌트
▪ issuer는 issuer와 clusterissuer로 분류
▪ issuer: 같은 namespace만 인증서 참조 가능
▪ clusterissuer: 모든 namespace에서 참조 가능
 컴퍼넌트
※ 공식문서: https://cert-manager.io/docs/tutorials/acme/ingress/#step-6-configure-let-s-encrypt-issuer
▪ Issuer은 stage, prod환경으로 분리
▪ stage: 테스트
▪ prod: 운영
 컴퍼넌트
※ 공식문서: 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
let's encrypt 인증서 발급
virtualbox
kubernetes
cert-manager
① ssl인증서 신청
② ssl인증서 생성
도메인 발급
③ 인증서
사용
 준비
▪ 외부접속이 가능한 쿠버네티스 클러스터
▪ nginx-ingress
▪ service-type: loadbalancer
▪ 온프레미스는 metaLB사용
▪ 도메인
▪ cloudflare 네임서버 연동
 준비
▪ cloudflare api token을 생성하고 쿠버네티스 secret에 저장
※ toekn생성 공식문서: https://cert-manager.io/docs/configuration/acme/dns01/cloudflare/#api-keys
apiVersion: v1
kind: Secret
metadata:
name: cloudflare-api-key-secret
type: Opaque
stringData:
api-key: <API Key>
 Issuer 발급
※ git wiki: https://github.com/choisungwook/portfolio/wiki/cert-manager-letsencrypt
▪ stage, prod clusterissuer발급
▪ 이메일 수정
apiVersion: cert-manager.io/v1
kind: ClusterIssuer
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: <your@email>
# Name of a secret used to store the ACME account private key
privateKeySecretRef:
name: letsencrypt-staging
# Enable the challenge provider
solvers:
- dns01:
cloudflare:
email: <your-email>
apiTokenSecretRef:
name: cloudflare-api-token-secret
key: api-token
apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
name: letsencrypt-prod
spec:
acme:
# The ACME server URL
server: https://acme-v02.api.letsencrypt.org/directory
# Email address used for ACME registration
email: <your@email>
# Name of a secret used to store the ACME account private key
privateKeySecretRef:
name: letsencrypt-prod
# Enable the challenge provider
solvers:
- dns01:
cloudflare:
email: <your-email>
apiTokenSecretRef:
name: cloudflare-api-token-secret
key: api-token
 Issuer 발급
▪ 발급확인: READY상태가 True
 deployment, 서비스 생성
▪ 요청을 처리할 pod, svc생성
▪ pod의 이미지는 nginx:latest사용
kubernetes
cert-manager
② ssl인증서 생성
※ git wiki: https://github.com/choisungwook/portfolio/wiki/cert-manager-letsencrypt#%EC%9D%B8%EC%A6%9D%EC%84%9C-
%EC%A0%81%EC%9A%A9-%EC%98%88%EC%A0%9C
 인증서 발급과 ingress 연동
▪ 인증서를 만들고 -> 저장된 인증서 secret을 ingress에 적용
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
name: acme-crt
spec:
secretName: acme-crt-secret
...
kubernetes
cert-manager
① ssl인증서 생성
② 인증서
사용 apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: nginx-test
annotations:
kubernetes.io/ingress.class: "nginx"
spec:
tls:
- hosts:
- test.choilab.xyz
secretName: acme-crt-secret
...
 인증서 발급과 ingress 연동
▪ 도메인 생성
 인증서 발급과 ingress 연동
▪ certificate 실행
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
name: stage-test221
spec:
secretName: stage-test221
issuerRef:
name: test-staging
kind: ClusterIssuer
commonName: 'choilab.xyz'
dnsNames:
- choilab.xyz
- test3.choilab.xyz
▪ certificate Ready가 True인지 확인
 인증서 발급과 ingress 연동
▪ ingress 생성
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: nginx-test221
annotations:
kubernetes.io/ingress.class: "nginx"
spec:
tls:
- hosts:
- test3.choilab.xyz
secretName: stage-test221
rules:
- host: test3.choilab.xyz
http:
paths:
- pathType: Prefix
path: "/"
backend:
service:
name: nginx-test6
port:
number: 80
 인증서 발급과 ingress 연동
▪ ingress 도메인에 접속하면 경고 페이지 표시
▪ let's encrypt stage환경은 테스트 목적이기 때문에 인증된 인증서 발급 X
▪ 발급자를 보면 (STAGING) ...으로 표시
 stage 설정을 prod로 이동
▪ 기존 ingress는 삭제
▪ prod-clusterissuer을 사용하여 certificate 생성
▪ prod-certificate이 True이면 ingress생성
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
name: prod-test221
spec:
secretName: prod-test221
issuerRef:
name: test-prod
kind: ClusterIssuer
commonName: 'choilab.xyz'
dnsNames:
- choilab.xyz
- test3.choilab.xyz
<prod-certificate>
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: prod-nginx-test221
annotations:
kubernetes.io/ingress.class: "nginx"
spec:
tls:
- hosts:
- test3.choilab.xyz
secretName: prod-test221
rules:
- host: test3.choilab.xyz
http:
paths:
- pathType: Prefix
path: "/"
backend:
service:
name: nginx-test6
port:
number: 80
<prod-ingress>
 stage 설정을 prod로 이동
▪ ingress 접속하여 경고창이 안뜨는지 확인
▪ 인증서 발급자 확인
 인증서 발급과 ingress 연동
▪ 두 단계를 통합하는 방법 존재
kubernetes
cert-manager
인증서 생성과 사용
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: nginx-test
annotations:
kubernetes.io/ingress.class: "nginx"
cert-manager.io/issuer: "<clusterissuername>"
spec:
tls:
- hosts:
- test.domain
secretName: test-secret # 인증서를 저장할 secret이름
rules:
- host: test.domain
http:
paths:
- pathType: Prefix
path: "/"
backend:
service:
name: nginx-test
port:
number: 80
 인증서 발급과 ingress 연동
▪ clusterissuer는 되었다가 안되었다가 해서... Issuer로 진행
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: nginx-test
annotations:
kubernetes.io/ingress.class: "nginx"
cert-manager.io/issuer: "issuer-prod-1"
spec:
tls:
- hosts:
- test.domain
secretName: test-secret # 인증서를 저장할 secret이름
rules:
- host: test.domain
http:
paths:
- pathType: Prefix
path: "/"
backend:
service:
name: nginx-test
port:
number: 80
apiVersion: cert-manager.io/v1
kind: Issuer
metadata:
name: issuer-prod-1
spec:
acme:
# The ACME server URL
server: https://acme-v02.api.letsencrypt.org/directory
# Email address used for ACME registration
email: <cloudflare email>
# Name of a secret used to store the ACME account private key
privateKeySecretRef:
name: issuer-prod-1
# Enable the challenge provider
solvers:
- dns01:
cloudflare:
email: <cloudflare email>
apiTokenSecretRef:
name: cloudflare-api-token-secret #cloudflare api token
key: api-token
<issuer> <nginx ingress>
참고자료
 참고자료
▪ 가비아 로고: https://www.gabia.com/
▪ cloudflare 로고: https://www.cloudflare.com/logo/
▪ let's encrypt 로고: https://letsencrypt.org/ko/trademarks/
▪ flaticon
▪ 라우터: https://www.flaticon.com/free-icon/wireless-router_2743461

More Related Content

What's hot

Rego Deep Dive
Rego Deep DiveRego Deep Dive
Rego Deep Dive
Torin Sandall
 
[OpenInfra Days Korea 2018] (Track 2) Neutron LBaaS 어디까지 왔니? - Octavia 소개
[OpenInfra Days Korea 2018] (Track 2) Neutron LBaaS 어디까지 왔니? - Octavia 소개[OpenInfra Days Korea 2018] (Track 2) Neutron LBaaS 어디까지 왔니? - Octavia 소개
[OpenInfra Days Korea 2018] (Track 2) Neutron LBaaS 어디까지 왔니? - Octavia 소개
OpenStack Korea Community
 
왜 쿠버네티스는 systemd로 cgroup을 관리하려고 할까요
왜 쿠버네티스는 systemd로 cgroup을 관리하려고 할까요왜 쿠버네티스는 systemd로 cgroup을 관리하려고 할까요
왜 쿠버네티스는 systemd로 cgroup을 관리하려고 할까요
Jo Hoon
 
User authentication and authorizarion in Kubernetes
User authentication and authorizarion in KubernetesUser authentication and authorizarion in Kubernetes
User authentication and authorizarion in Kubernetes
Neependra Khare
 
Role based access control - RBAC - Kubernetes
Role based access control - RBAC - KubernetesRole based access control - RBAC - Kubernetes
Role based access control - RBAC - Kubernetes
Milan Das
 
[오픈소스컨설팅] 쿠버네티스와 쿠버네티스 on 오픈스택 비교 및 구축 방법
[오픈소스컨설팅] 쿠버네티스와 쿠버네티스 on 오픈스택 비교  및 구축 방법[오픈소스컨설팅] 쿠버네티스와 쿠버네티스 on 오픈스택 비교  및 구축 방법
[오픈소스컨설팅] 쿠버네티스와 쿠버네티스 on 오픈스택 비교 및 구축 방법
Open Source Consulting
 
OPA APIs and Use Case Survey
OPA APIs and Use Case SurveyOPA APIs and Use Case Survey
OPA APIs and Use Case Survey
Torin Sandall
 
Docker Networking Overview
Docker Networking OverviewDocker Networking Overview
Docker Networking Overview
Sreenivas Makam
 
Keystone at openstack multi sites
Keystone at openstack multi sitesKeystone at openstack multi sites
Keystone at openstack multi sites
Vietnam Open Infrastructure User Group
 
OpenStack DevStack Install - 2부 (Multi-nodes)
OpenStack DevStack Install - 2부 (Multi-nodes)OpenStack DevStack Install - 2부 (Multi-nodes)
OpenStack DevStack Install - 2부 (Multi-nodes)
Ian Choi
 
Locking down your Kubernetes cluster with Linkerd
Locking down your Kubernetes cluster with LinkerdLocking down your Kubernetes cluster with Linkerd
Locking down your Kubernetes cluster with Linkerd
Buoyant
 
쿠버네티스를 이용한 기능 브랜치별 테스트 서버 만들기 (GitOps CI/CD)
쿠버네티스를 이용한 기능 브랜치별 테스트 서버 만들기 (GitOps CI/CD)쿠버네티스를 이용한 기능 브랜치별 테스트 서버 만들기 (GitOps CI/CD)
쿠버네티스를 이용한 기능 브랜치별 테스트 서버 만들기 (GitOps CI/CD)
충섭 김
 
[네전따] 네트워크 엔지니어에게 쿠버네티스는 어떤 의미일까요
[네전따] 네트워크 엔지니어에게 쿠버네티스는 어떤 의미일까요[네전따] 네트워크 엔지니어에게 쿠버네티스는 어떤 의미일까요
[네전따] 네트워크 엔지니어에게 쿠버네티스는 어떤 의미일까요
Jo Hoon
 
Kubernetes #1 intro
Kubernetes #1   introKubernetes #1   intro
Kubernetes #1 intro
Terry Cho
 
Securing APIs with Open Policy Agent
Securing APIs with Open Policy AgentSecuring APIs with Open Policy Agent
Securing APIs with Open Policy Agent
Nordic APIs
 
[열린기술공방] Container기반의 DevOps - 클라우드 네이티브
[열린기술공방] Container기반의 DevOps - 클라우드 네이티브[열린기술공방] Container기반의 DevOps - 클라우드 네이티브
[열린기술공방] Container기반의 DevOps - 클라우드 네이티브
Open Source Consulting
 
오픈스택 멀티노드 설치 후기
오픈스택 멀티노드 설치 후기오픈스택 멀티노드 설치 후기
오픈스택 멀티노드 설치 후기
영우 김
 
CKA_1st.pptx
CKA_1st.pptxCKA_1st.pptx
CKA_1st.pptx
YIJHEHUANG
 
Deep dive into Kubernetes Networking
Deep dive into Kubernetes NetworkingDeep dive into Kubernetes Networking
Deep dive into Kubernetes Networking
Sreenivas Makam
 

What's hot (20)

Rego Deep Dive
Rego Deep DiveRego Deep Dive
Rego Deep Dive
 
[OpenInfra Days Korea 2018] (Track 2) Neutron LBaaS 어디까지 왔니? - Octavia 소개
[OpenInfra Days Korea 2018] (Track 2) Neutron LBaaS 어디까지 왔니? - Octavia 소개[OpenInfra Days Korea 2018] (Track 2) Neutron LBaaS 어디까지 왔니? - Octavia 소개
[OpenInfra Days Korea 2018] (Track 2) Neutron LBaaS 어디까지 왔니? - Octavia 소개
 
OpenStack Keystone
OpenStack KeystoneOpenStack Keystone
OpenStack Keystone
 
왜 쿠버네티스는 systemd로 cgroup을 관리하려고 할까요
왜 쿠버네티스는 systemd로 cgroup을 관리하려고 할까요왜 쿠버네티스는 systemd로 cgroup을 관리하려고 할까요
왜 쿠버네티스는 systemd로 cgroup을 관리하려고 할까요
 
User authentication and authorizarion in Kubernetes
User authentication and authorizarion in KubernetesUser authentication and authorizarion in Kubernetes
User authentication and authorizarion in Kubernetes
 
Role based access control - RBAC - Kubernetes
Role based access control - RBAC - KubernetesRole based access control - RBAC - Kubernetes
Role based access control - RBAC - Kubernetes
 
[오픈소스컨설팅] 쿠버네티스와 쿠버네티스 on 오픈스택 비교 및 구축 방법
[오픈소스컨설팅] 쿠버네티스와 쿠버네티스 on 오픈스택 비교  및 구축 방법[오픈소스컨설팅] 쿠버네티스와 쿠버네티스 on 오픈스택 비교  및 구축 방법
[오픈소스컨설팅] 쿠버네티스와 쿠버네티스 on 오픈스택 비교 및 구축 방법
 
OPA APIs and Use Case Survey
OPA APIs and Use Case SurveyOPA APIs and Use Case Survey
OPA APIs and Use Case Survey
 
Docker Networking Overview
Docker Networking OverviewDocker Networking Overview
Docker Networking Overview
 
Keystone at openstack multi sites
Keystone at openstack multi sitesKeystone at openstack multi sites
Keystone at openstack multi sites
 
OpenStack DevStack Install - 2부 (Multi-nodes)
OpenStack DevStack Install - 2부 (Multi-nodes)OpenStack DevStack Install - 2부 (Multi-nodes)
OpenStack DevStack Install - 2부 (Multi-nodes)
 
Locking down your Kubernetes cluster with Linkerd
Locking down your Kubernetes cluster with LinkerdLocking down your Kubernetes cluster with Linkerd
Locking down your Kubernetes cluster with Linkerd
 
쿠버네티스를 이용한 기능 브랜치별 테스트 서버 만들기 (GitOps CI/CD)
쿠버네티스를 이용한 기능 브랜치별 테스트 서버 만들기 (GitOps CI/CD)쿠버네티스를 이용한 기능 브랜치별 테스트 서버 만들기 (GitOps CI/CD)
쿠버네티스를 이용한 기능 브랜치별 테스트 서버 만들기 (GitOps CI/CD)
 
[네전따] 네트워크 엔지니어에게 쿠버네티스는 어떤 의미일까요
[네전따] 네트워크 엔지니어에게 쿠버네티스는 어떤 의미일까요[네전따] 네트워크 엔지니어에게 쿠버네티스는 어떤 의미일까요
[네전따] 네트워크 엔지니어에게 쿠버네티스는 어떤 의미일까요
 
Kubernetes #1 intro
Kubernetes #1   introKubernetes #1   intro
Kubernetes #1 intro
 
Securing APIs with Open Policy Agent
Securing APIs with Open Policy AgentSecuring APIs with Open Policy Agent
Securing APIs with Open Policy Agent
 
[열린기술공방] Container기반의 DevOps - 클라우드 네이티브
[열린기술공방] Container기반의 DevOps - 클라우드 네이티브[열린기술공방] Container기반의 DevOps - 클라우드 네이티브
[열린기술공방] Container기반의 DevOps - 클라우드 네이티브
 
오픈스택 멀티노드 설치 후기
오픈스택 멀티노드 설치 후기오픈스택 멀티노드 설치 후기
오픈스택 멀티노드 설치 후기
 
CKA_1st.pptx
CKA_1st.pptxCKA_1st.pptx
CKA_1st.pptx
 
Deep dive into Kubernetes Networking
Deep dive into Kubernetes NetworkingDeep dive into Kubernetes Networking
Deep dive into Kubernetes Networking
 

Similar to cert-manager로 let's encrypt 인증서 발급

nexus helm 설치와 private docker repo 생성
nexus helm 설치와 private docker repo 생성nexus helm 설치와 private docker repo 생성
nexus helm 설치와 private docker repo 생성
choi sungwook
 
nexus helm 설치, docker/helm repo 설정과 예제
nexus helm 설치, docker/helm repo 설정과 예제nexus helm 설치, docker/helm repo 설정과 예제
nexus helm 설치, docker/helm repo 설정과 예제
choi sungwook
 
OpenStack Swift Debugging
OpenStack Swift DebuggingOpenStack Swift Debugging
OpenStack Swift Debugging
OpenStack Korea Community
 
Hadoop security DeView 2014
Hadoop security DeView 2014Hadoop security DeView 2014
Hadoop security DeView 2014
Gruter
 
Deploying Hyperledger Fabric on Kubernetes.pptx
Deploying Hyperledger Fabric on Kubernetes.pptxDeploying Hyperledger Fabric on Kubernetes.pptx
Deploying Hyperledger Fabric on Kubernetes.pptx
wonyong hwang
 
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
Ji-Woong Choi
 
Kafka slideshare
Kafka   slideshareKafka   slideshare
Kafka slideshare
wonyong hwang
 
1908 Hyperledger Fabric 소개 및 첫 네트워크 구축하기
1908 Hyperledger Fabric 소개 및 첫 네트워크 구축하기1908 Hyperledger Fabric 소개 및 첫 네트워크 구축하기
1908 Hyperledger Fabric 소개 및 첫 네트워크 구축하기
Hyperledger Korea User Group
 
Ngrok을 이용한 Nginx Https 적용하기.pptx
Ngrok을 이용한 Nginx Https 적용하기.pptxNgrok을 이용한 Nginx Https 적용하기.pptx
Ngrok을 이용한 Nginx Https 적용하기.pptx
wonyong hwang
 
Cloud-Barista 제7차 컨퍼런스 : 멀티클라우드 인프라 서비스 연동 (CB-Spider)
Cloud-Barista 제7차 컨퍼런스 : 멀티클라우드 인프라 서비스 연동 (CB-Spider)Cloud-Barista 제7차 컨퍼런스 : 멀티클라우드 인프라 서비스 연동 (CB-Spider)
Cloud-Barista 제7차 컨퍼런스 : 멀티클라우드 인프라 서비스 연동 (CB-Spider)
Cloud-Barista Community
 
Cloud-Barista 제3차 오픈 컨퍼런스 : CB-Spider - 멀티 클라우드 인프라 연동(Multi-Cloud Infrastruc...
Cloud-Barista 제3차 오픈 컨퍼런스 : CB-Spider - 멀티 클라우드 인프라 연동(Multi-Cloud Infrastruc...Cloud-Barista 제3차 오픈 컨퍼런스 : CB-Spider - 멀티 클라우드 인프라 연동(Multi-Cloud Infrastruc...
Cloud-Barista 제3차 오픈 컨퍼런스 : CB-Spider - 멀티 클라우드 인프라 연동(Multi-Cloud Infrastruc...
Cloud-Barista Community
 
Cloud-Barista 제6차 오픈 컨퍼런스 : 멀티클라우드 인프라 서비스 연동 (CB-Spider)
Cloud-Barista 제6차 오픈 컨퍼런스 : 멀티클라우드 인프라 서비스 연동 (CB-Spider)Cloud-Barista 제6차 오픈 컨퍼런스 : 멀티클라우드 인프라 서비스 연동 (CB-Spider)
Cloud-Barista 제6차 오픈 컨퍼런스 : 멀티클라우드 인프라 서비스 연동 (CB-Spider)
Cloud-Barista Community
 
Kubernetes on Premise Practical Guide
Kubernetes on Premise Practical GuideKubernetes on Premise Practical Guide
Kubernetes on Premise Practical Guide
Chan Shik Lim
 
[NDC17] Kubernetes로 개발서버 간단히 찍어내기
[NDC17] Kubernetes로 개발서버 간단히 찍어내기[NDC17] Kubernetes로 개발서버 간단히 찍어내기
[NDC17] Kubernetes로 개발서버 간단히 찍어내기
SeungYong Oh
 
하이퍼레저 패브릭 실습자료
하이퍼레저 패브릭 실습자료하이퍼레저 패브릭 실습자료
하이퍼레저 패브릭 실습자료
TIMEGATE
 
Nginx Https 적용하기.pptx
Nginx Https 적용하기.pptxNginx Https 적용하기.pptx
Nginx Https 적용하기.pptx
wonyong hwang
 
DevOps (AWS, Docker, Ansible, Jenkins)
DevOps (AWS, Docker, Ansible, Jenkins)DevOps (AWS, Docker, Ansible, Jenkins)
DevOps (AWS, Docker, Ansible, Jenkins)
완철 김
 
Kerberos Authentication - 버티카 케르베로스 연동하기
Kerberos Authentication - 버티카 케르베로스 연동하기Kerberos Authentication - 버티카 케르베로스 연동하기
Kerberos Authentication - 버티카 케르베로스 연동하기
Kee Hoon Lee
 
Mcollective orchestration tool 소개
Mcollective orchestration tool 소개Mcollective orchestration tool 소개
Mcollective orchestration tool 소개
태준 문
 
Hyperledger fabric - tuna fishing analysis
Hyperledger fabric - tuna fishing analysisHyperledger fabric - tuna fishing analysis
Hyperledger fabric - tuna fishing analysis
병준 김
 

Similar to cert-manager로 let's encrypt 인증서 발급 (20)

nexus helm 설치와 private docker repo 생성
nexus helm 설치와 private docker repo 생성nexus helm 설치와 private docker repo 생성
nexus helm 설치와 private docker repo 생성
 
nexus helm 설치, docker/helm repo 설정과 예제
nexus helm 설치, docker/helm repo 설정과 예제nexus helm 설치, docker/helm repo 설정과 예제
nexus helm 설치, docker/helm repo 설정과 예제
 
OpenStack Swift Debugging
OpenStack Swift DebuggingOpenStack Swift Debugging
OpenStack Swift Debugging
 
Hadoop security DeView 2014
Hadoop security DeView 2014Hadoop security DeView 2014
Hadoop security DeView 2014
 
Deploying Hyperledger Fabric on Kubernetes.pptx
Deploying Hyperledger Fabric on Kubernetes.pptxDeploying Hyperledger Fabric on Kubernetes.pptx
Deploying Hyperledger Fabric on Kubernetes.pptx
 
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
 
Kafka slideshare
Kafka   slideshareKafka   slideshare
Kafka slideshare
 
1908 Hyperledger Fabric 소개 및 첫 네트워크 구축하기
1908 Hyperledger Fabric 소개 및 첫 네트워크 구축하기1908 Hyperledger Fabric 소개 및 첫 네트워크 구축하기
1908 Hyperledger Fabric 소개 및 첫 네트워크 구축하기
 
Ngrok을 이용한 Nginx Https 적용하기.pptx
Ngrok을 이용한 Nginx Https 적용하기.pptxNgrok을 이용한 Nginx Https 적용하기.pptx
Ngrok을 이용한 Nginx Https 적용하기.pptx
 
Cloud-Barista 제7차 컨퍼런스 : 멀티클라우드 인프라 서비스 연동 (CB-Spider)
Cloud-Barista 제7차 컨퍼런스 : 멀티클라우드 인프라 서비스 연동 (CB-Spider)Cloud-Barista 제7차 컨퍼런스 : 멀티클라우드 인프라 서비스 연동 (CB-Spider)
Cloud-Barista 제7차 컨퍼런스 : 멀티클라우드 인프라 서비스 연동 (CB-Spider)
 
Cloud-Barista 제3차 오픈 컨퍼런스 : CB-Spider - 멀티 클라우드 인프라 연동(Multi-Cloud Infrastruc...
Cloud-Barista 제3차 오픈 컨퍼런스 : CB-Spider - 멀티 클라우드 인프라 연동(Multi-Cloud Infrastruc...Cloud-Barista 제3차 오픈 컨퍼런스 : CB-Spider - 멀티 클라우드 인프라 연동(Multi-Cloud Infrastruc...
Cloud-Barista 제3차 오픈 컨퍼런스 : CB-Spider - 멀티 클라우드 인프라 연동(Multi-Cloud Infrastruc...
 
Cloud-Barista 제6차 오픈 컨퍼런스 : 멀티클라우드 인프라 서비스 연동 (CB-Spider)
Cloud-Barista 제6차 오픈 컨퍼런스 : 멀티클라우드 인프라 서비스 연동 (CB-Spider)Cloud-Barista 제6차 오픈 컨퍼런스 : 멀티클라우드 인프라 서비스 연동 (CB-Spider)
Cloud-Barista 제6차 오픈 컨퍼런스 : 멀티클라우드 인프라 서비스 연동 (CB-Spider)
 
Kubernetes on Premise Practical Guide
Kubernetes on Premise Practical GuideKubernetes on Premise Practical Guide
Kubernetes on Premise Practical Guide
 
[NDC17] Kubernetes로 개발서버 간단히 찍어내기
[NDC17] Kubernetes로 개발서버 간단히 찍어내기[NDC17] Kubernetes로 개발서버 간단히 찍어내기
[NDC17] Kubernetes로 개발서버 간단히 찍어내기
 
하이퍼레저 패브릭 실습자료
하이퍼레저 패브릭 실습자료하이퍼레저 패브릭 실습자료
하이퍼레저 패브릭 실습자료
 
Nginx Https 적용하기.pptx
Nginx Https 적용하기.pptxNginx Https 적용하기.pptx
Nginx Https 적용하기.pptx
 
DevOps (AWS, Docker, Ansible, Jenkins)
DevOps (AWS, Docker, Ansible, Jenkins)DevOps (AWS, Docker, Ansible, Jenkins)
DevOps (AWS, Docker, Ansible, Jenkins)
 
Kerberos Authentication - 버티카 케르베로스 연동하기
Kerberos Authentication - 버티카 케르베로스 연동하기Kerberos Authentication - 버티카 케르베로스 연동하기
Kerberos Authentication - 버티카 케르베로스 연동하기
 
Mcollective orchestration tool 소개
Mcollective orchestration tool 소개Mcollective orchestration tool 소개
Mcollective orchestration tool 소개
 
Hyperledger fabric - tuna fishing analysis
Hyperledger fabric - tuna fishing analysisHyperledger fabric - tuna fishing analysis
Hyperledger fabric - tuna fishing analysis
 

More from choi sungwook

테라폼스터디5주차 1편
테라폼스터디5주차 1편테라폼스터디5주차 1편
테라폼스터디5주차 1편
choi sungwook
 
컨테이너와 도커 이해
컨테이너와 도커 이해컨테이너와 도커 이해
컨테이너와 도커 이해
choi sungwook
 
kustomize 빠르게 시작하기
kustomize 빠르게 시작하기kustomize 빠르게 시작하기
kustomize 빠르게 시작하기
choi sungwook
 
entrypoint 오버라이딩
entrypoint 오버라이딩entrypoint 오버라이딩
entrypoint 오버라이딩
choi sungwook
 
젠킨스 컨셉
젠킨스 컨셉젠킨스 컨셉
젠킨스 컨셉
choi sungwook
 
System Manager를 이용한 EC2 원격쉘 접속
System Manager를 이용한 EC2 원격쉘 접속System Manager를 이용한 EC2 원격쉘 접속
System Manager를 이용한 EC2 원격쉘 접속
choi sungwook
 
aws profile관리
aws profile관리aws profile관리
aws profile관리
choi sungwook
 
nginx 입문 공부자료
nginx 입문 공부자료nginx 입문 공부자료
nginx 입문 공부자료
choi sungwook
 
nginx 504 timeout오류 해결
nginx 504 timeout오류 해결nginx 504 timeout오류 해결
nginx 504 timeout오류 해결
choi sungwook
 
AWS 다른계정 리소스 사용방법
AWS 다른계정 리소스 사용방법AWS 다른계정 리소스 사용방법
AWS 다른계정 리소스 사용방법
choi sungwook
 
docker build cache
docker build cachedocker build cache
docker build cache
choi sungwook
 
Dockerfile과 도커 이미지 레이어 관계
Dockerfile과 도커 이미지 레이어 관계Dockerfile과 도커 이미지 레이어 관계
Dockerfile과 도커 이미지 레이어 관계
choi sungwook
 
도커 이미지 레이어 구조
도커 이미지 레이어 구조도커 이미지 레이어 구조
도커 이미지 레이어 구조
choi sungwook
 
helm 입문
helm 입문helm 입문
helm 입문
choi sungwook
 
Prometheus 원리와 예제
Prometheus 원리와 예제Prometheus 원리와 예제
Prometheus 원리와 예제
choi sungwook
 
쿠버네티스 멀티 클러스터 관리
쿠버네티스 멀티 클러스터 관리쿠버네티스 멀티 클러스터 관리
쿠버네티스 멀티 클러스터 관리
choi sungwook
 
EC2 기타비용
EC2 기타비용EC2 기타비용
EC2 기타비용
choi sungwook
 
스프링부트 JPA와 mariadb 도커 컨테이너 연동
스프링부트 JPA와 mariadb 도커 컨테이너 연동스프링부트 JPA와 mariadb 도커 컨테이너 연동
스프링부트 JPA와 mariadb 도커 컨테이너 연동
choi sungwook
 
윈도우에서 도커 설치
윈도우에서 도커 설치윈도우에서 도커 설치
윈도우에서 도커 설치
choi sungwook
 
onpremise환경에서 kubespray설치
onpremise환경에서 kubespray설치onpremise환경에서 kubespray설치
onpremise환경에서 kubespray설치
choi sungwook
 

More from choi sungwook (20)

테라폼스터디5주차 1편
테라폼스터디5주차 1편테라폼스터디5주차 1편
테라폼스터디5주차 1편
 
컨테이너와 도커 이해
컨테이너와 도커 이해컨테이너와 도커 이해
컨테이너와 도커 이해
 
kustomize 빠르게 시작하기
kustomize 빠르게 시작하기kustomize 빠르게 시작하기
kustomize 빠르게 시작하기
 
entrypoint 오버라이딩
entrypoint 오버라이딩entrypoint 오버라이딩
entrypoint 오버라이딩
 
젠킨스 컨셉
젠킨스 컨셉젠킨스 컨셉
젠킨스 컨셉
 
System Manager를 이용한 EC2 원격쉘 접속
System Manager를 이용한 EC2 원격쉘 접속System Manager를 이용한 EC2 원격쉘 접속
System Manager를 이용한 EC2 원격쉘 접속
 
aws profile관리
aws profile관리aws profile관리
aws profile관리
 
nginx 입문 공부자료
nginx 입문 공부자료nginx 입문 공부자료
nginx 입문 공부자료
 
nginx 504 timeout오류 해결
nginx 504 timeout오류 해결nginx 504 timeout오류 해결
nginx 504 timeout오류 해결
 
AWS 다른계정 리소스 사용방법
AWS 다른계정 리소스 사용방법AWS 다른계정 리소스 사용방법
AWS 다른계정 리소스 사용방법
 
docker build cache
docker build cachedocker build cache
docker build cache
 
Dockerfile과 도커 이미지 레이어 관계
Dockerfile과 도커 이미지 레이어 관계Dockerfile과 도커 이미지 레이어 관계
Dockerfile과 도커 이미지 레이어 관계
 
도커 이미지 레이어 구조
도커 이미지 레이어 구조도커 이미지 레이어 구조
도커 이미지 레이어 구조
 
helm 입문
helm 입문helm 입문
helm 입문
 
Prometheus 원리와 예제
Prometheus 원리와 예제Prometheus 원리와 예제
Prometheus 원리와 예제
 
쿠버네티스 멀티 클러스터 관리
쿠버네티스 멀티 클러스터 관리쿠버네티스 멀티 클러스터 관리
쿠버네티스 멀티 클러스터 관리
 
EC2 기타비용
EC2 기타비용EC2 기타비용
EC2 기타비용
 
스프링부트 JPA와 mariadb 도커 컨테이너 연동
스프링부트 JPA와 mariadb 도커 컨테이너 연동스프링부트 JPA와 mariadb 도커 컨테이너 연동
스프링부트 JPA와 mariadb 도커 컨테이너 연동
 
윈도우에서 도커 설치
윈도우에서 도커 설치윈도우에서 도커 설치
윈도우에서 도커 설치
 
onpremise환경에서 kubespray설치
onpremise환경에서 kubespray설치onpremise환경에서 kubespray설치
onpremise환경에서 kubespray설치
 

cert-manager로 let's encrypt 인증서 발급

  • 1. cert-manger로 Let's encrypt 인증서 생성 - 온프레미스 환경 이 문서는 쿠버네티스 설치, 도메인 설정, cert-manager 설치를 다루지 않습니다.
  • 3.  사용이유 ▪ self-signed 인증서의 불편함 ▪ 인증기관의 인증서가 아니면 수동설정이 빈번 서비스 ① self-signed 인증서로 통신할게! 오픈소스 ② 거절 ③ 클라이언트 설정 ④ 오픈소스 설정 예상보다 많은 시간을 잡아먹음
  • 4.  사용이유 ▪ Let's encrypt에서 무료 인증서 발급해주고 ▪ cert-manager에서 인증서 생성&관리 acme 프로토콜 통신 이게 뭐지? ① ssl인증서 신청 ② ssl인증서 생성
  • 5.  장점 ▪ yaml파일로 인증서 생성&관리 ▪ 인증서 만료 전 자동 갱신 apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: nginx-test annotations: kubernetes.io/ingress.class: "nginx" cert-manager.io/issuer: "prod" spec: tls: - hosts: - abcd.choilab.xyz secretName: stage-test-prod-1 rules: - host: abcd.choilab.xyz http: paths: - path: / pathType: Prefix backend: service: name: nginx-test port: number: 80
  • 6. virtualbox kubernetes cert-manager ① ssl인증서 신청 ② ssl인증서 생성 도메인 관리 ③ 인증서 사용  인증서 생성과정 요약 ▪ 도메인 관리: 가비아 ▪ 네임서버 관리: cloudflare ▪ 인증서 생성: let's encrypt ▪ 쿠버네티스 인증서 관리: cert-manager
  • 7.  사용자 요청처리 요약 virtualbox kubernetes cert-manager Client ① helloworld.com IP 질의 ② 집공유기 IP리턴 ③ 서비스 요청 ④ 포트포워딩 ⑤ 응답 ① 사용자가 요청한 도메인(예: helloworld.com)에 대한 IP질의 ② 도메인에 해당하는 IP리턴(이 실습에서는 집 공유기 IP사용) ③ IP로 서비스를 요청하면 공유기가 쿠버네티스 ingress로 포트포워딩 ④ ingress는 서비스를 처리하고 응답 집공유기
  • 9.  컴퍼넌트 ① Issuer: 인증서 주체 ② certificates: 인증서 정의 ③ secret: 발급된 인증서와 비밀키 저장 ① ② ③ ※ 공식문서: https://cert-manager.io/docs/
  • 10.  컴퍼넌트 ※ self-signed issuer: 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
  • 15. virtualbox kubernetes cert-manager ① ssl인증서 신청 ② ssl인증서 생성 도메인 발급 ③ 인증서 사용  준비 ▪ 외부접속이 가능한 쿠버네티스 클러스터 ▪ nginx-ingress ▪ service-type: loadbalancer ▪ 온프레미스는 metaLB사용 ▪ 도메인 ▪ cloudflare 네임서버 연동
  • 16.  준비 ▪ cloudflare api token을 생성하고 쿠버네티스 secret에 저장 ※ toekn생성 공식문서: https://cert-manager.io/docs/configuration/acme/dns01/cloudflare/#api-keys apiVersion: v1 kind: Secret metadata: name: cloudflare-api-key-secret type: Opaque stringData: api-key: <API Key>
  • 17.  Issuer 발급 ※ git wiki: https://github.com/choisungwook/portfolio/wiki/cert-manager-letsencrypt ▪ stage, prod clusterissuer발급 ▪ 이메일 수정 apiVersion: cert-manager.io/v1 kind: ClusterIssuer 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: <your@email> # Name of a secret used to store the ACME account private key privateKeySecretRef: name: letsencrypt-staging # Enable the challenge provider solvers: - dns01: cloudflare: email: <your-email> apiTokenSecretRef: name: cloudflare-api-token-secret key: api-token apiVersion: cert-manager.io/v1 kind: ClusterIssuer metadata: name: letsencrypt-prod spec: acme: # The ACME server URL server: https://acme-v02.api.letsencrypt.org/directory # Email address used for ACME registration email: <your@email> # Name of a secret used to store the ACME account private key privateKeySecretRef: name: letsencrypt-prod # Enable the challenge provider solvers: - dns01: cloudflare: email: <your-email> apiTokenSecretRef: name: cloudflare-api-token-secret key: api-token
  • 18.  Issuer 발급 ▪ 발급확인: READY상태가 True
  • 19.  deployment, 서비스 생성 ▪ 요청을 처리할 pod, svc생성 ▪ pod의 이미지는 nginx:latest사용 kubernetes cert-manager ② ssl인증서 생성 ※ git wiki: https://github.com/choisungwook/portfolio/wiki/cert-manager-letsencrypt#%EC%9D%B8%EC%A6%9D%EC%84%9C- %EC%A0%81%EC%9A%A9-%EC%98%88%EC%A0%9C
  • 20.  인증서 발급과 ingress 연동 ▪ 인증서를 만들고 -> 저장된 인증서 secret을 ingress에 적용 apiVersion: cert-manager.io/v1 kind: Certificate metadata: name: acme-crt spec: secretName: acme-crt-secret ... kubernetes cert-manager ① ssl인증서 생성 ② 인증서 사용 apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: nginx-test annotations: kubernetes.io/ingress.class: "nginx" spec: tls: - hosts: - test.choilab.xyz secretName: acme-crt-secret ...
  • 21.  인증서 발급과 ingress 연동 ▪ 도메인 생성
  • 22.  인증서 발급과 ingress 연동 ▪ certificate 실행 apiVersion: cert-manager.io/v1 kind: Certificate metadata: name: stage-test221 spec: secretName: stage-test221 issuerRef: name: test-staging kind: ClusterIssuer commonName: 'choilab.xyz' dnsNames: - choilab.xyz - test3.choilab.xyz ▪ certificate Ready가 True인지 확인
  • 23.  인증서 발급과 ingress 연동 ▪ ingress 생성 apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: nginx-test221 annotations: kubernetes.io/ingress.class: "nginx" spec: tls: - hosts: - test3.choilab.xyz secretName: stage-test221 rules: - host: test3.choilab.xyz http: paths: - pathType: Prefix path: "/" backend: service: name: nginx-test6 port: number: 80
  • 24.  인증서 발급과 ingress 연동 ▪ ingress 도메인에 접속하면 경고 페이지 표시 ▪ let's encrypt stage환경은 테스트 목적이기 때문에 인증된 인증서 발급 X ▪ 발급자를 보면 (STAGING) ...으로 표시
  • 25.  stage 설정을 prod로 이동 ▪ 기존 ingress는 삭제 ▪ prod-clusterissuer을 사용하여 certificate 생성 ▪ prod-certificate이 True이면 ingress생성 apiVersion: cert-manager.io/v1 kind: Certificate metadata: name: prod-test221 spec: secretName: prod-test221 issuerRef: name: test-prod kind: ClusterIssuer commonName: 'choilab.xyz' dnsNames: - choilab.xyz - test3.choilab.xyz <prod-certificate> apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: prod-nginx-test221 annotations: kubernetes.io/ingress.class: "nginx" spec: tls: - hosts: - test3.choilab.xyz secretName: prod-test221 rules: - host: test3.choilab.xyz http: paths: - pathType: Prefix path: "/" backend: service: name: nginx-test6 port: number: 80 <prod-ingress>
  • 26.  stage 설정을 prod로 이동 ▪ ingress 접속하여 경고창이 안뜨는지 확인 ▪ 인증서 발급자 확인
  • 27.  인증서 발급과 ingress 연동 ▪ 두 단계를 통합하는 방법 존재 kubernetes cert-manager 인증서 생성과 사용 apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: nginx-test annotations: kubernetes.io/ingress.class: "nginx" cert-manager.io/issuer: "<clusterissuername>" spec: tls: - hosts: - test.domain secretName: test-secret # 인증서를 저장할 secret이름 rules: - host: test.domain http: paths: - pathType: Prefix path: "/" backend: service: name: nginx-test port: number: 80
  • 28.  인증서 발급과 ingress 연동 ▪ clusterissuer는 되었다가 안되었다가 해서... Issuer로 진행 apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: nginx-test annotations: kubernetes.io/ingress.class: "nginx" cert-manager.io/issuer: "issuer-prod-1" spec: tls: - hosts: - test.domain secretName: test-secret # 인증서를 저장할 secret이름 rules: - host: test.domain http: paths: - pathType: Prefix path: "/" backend: service: name: nginx-test port: number: 80 apiVersion: cert-manager.io/v1 kind: Issuer metadata: name: issuer-prod-1 spec: acme: # The ACME server URL server: https://acme-v02.api.letsencrypt.org/directory # Email address used for ACME registration email: <cloudflare email> # Name of a secret used to store the ACME account private key privateKeySecretRef: name: issuer-prod-1 # Enable the challenge provider solvers: - dns01: cloudflare: email: <cloudflare email> apiTokenSecretRef: name: cloudflare-api-token-secret #cloudflare api token key: api-token <issuer> <nginx ingress>
  • 30.  참고자료 ▪ 가비아 로고: https://www.gabia.com/ ▪ cloudflare 로고: https://www.cloudflare.com/logo/ ▪ let's encrypt 로고: https://letsencrypt.org/ko/trademarks/ ▪ flaticon ▪ 라우터: https://www.flaticon.com/free-icon/wireless-router_2743461