Cert-Manager的不同clusterissuer验证方式

目录

cert-manager普通签发证书的时候,通常是DNS的A记录已经解析到相关的Ingress前置的LB 公网IP了。

第一种情况,有公网IP的证书签发,验证方式是http

那准备好cluster-issuer.yaml

 1apiVersion: cert-manager.io/v1
 2kind: ClusterIssuer
 3metadata:
 4  name: letsencrypt-prod1
 5spec:
 6  acme:
 7    server: https://acme-v02.api.letsencrypt.org/directory
 8    email: zhangranrui@rendoumi.com
 9    privateKeySecretRef:
10      name: letsencrypt-prod1
11    solvers:
12    - http01:
13        ingress:
14          class: nginx
第二种情况,如果集群是部署在内网,根本没有公网ip,就不能通过80和443的验证来签发了,只能用DNS校验的方式来签发证书

那以cloudflare托管的DNS为例,我们需要拿到CF的dns-api的token,然后声明,再定义ClusterIssuer

 1---
 2apiVersion: v1
 3kind: Secret
 4metadata:
 5  name: cloudflare-api-token-secret
 6type: Opaque
 7stringData:
 8  api-token: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
 9  
10---  
11apiVersion: cert-manager.io/v1
12kind: ClusterIssuer
13metadata:
14  name: letsencrypt-prod2
15spec:
16  acme:
17    server: https://acme-v02.api.letsencrypt.org/directory
18    email: zhangranrui@rendoumi.com
19    privateKeySecretRef:
20      name: letsencrypt-prod2
21    solvers:
22    - dns01:
23        cloudflare:
24          email: zhangranrui@rendoumi.com
25          apiTokenSecretRef:
26            name: cloudflare-api-token-secret
27            key: api-token

那第一种和第二种的区别就是solvers是不同的。

那最后annouce ingress即可自动签发证书,选择不同cert-manager.io/cluster-issuer就可以选择不同的签发方式。

 1apiVersion: networking.k8s.io/v1
 2kind: Ingress
 3metadata:
 4  name: test-rednoumi-com-ingress
 5  annotations:
 6    cert-manager.io/cluster-issuer: "letsencrypt-prod1"
 7spec:
 8  ingressClassName: nginx
 9  tls:
10  - hosts:
11    - test.rendoumi.com
12    secretName: test-rendoumi-com-tls
13  rules:
14  - host: test.rendoumi.com
15    http:
16      paths:
17      - path: /
18        pathType: Prefix 
19        backend:
20          service:
21            name: nginx
22            port:
23              number: 80

OPNsense的远程安装并访问WEBGUI
comments powered by Disqus