我正在为本地开发设置一个 k3s 集群。
需要明确的是,我没有公共 IP 地址。
目前,我正在寻找一种解决方案来使证书过程自动化(通过 cert-manager)。
为了让它工作,我做了以下工作:
- 部署的 k3s
- 部署的证书管理器
- 部署的traefik
- 购买了一个域名
- 创建了一个 cloudflare 帐户并在那里添加了域
- 创建了一个 API 令牌来执行 acme 挑战(基于https://cert-manager.io/docs/configuration/acme/dns01/cloudflare/)
- 创建了一个简单的测试网站
添加测试网站时,出现以下错误:
找不到域 _acme-challenge.. 的区域。(在 SLD 中的子域 noir 中都没有)请确保配置中的域条目是正确的,并且 API 正确设置了 Zone.read 权限。
我有以下配置:
ClusterIssuer
apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
name: letsencrypt
spec:
acme:
email: my@emailaddress.com
server: https://acme-v02.api.letsencrypt.org/directory
privateKeySecretRef:
name: letsencrypt
solvers:
- dns01:
cloudflare:
email: my@emailaddress.com
apiKeySecretRef:
name: cloudflare-api-key-secret
key: api-key
测试网站
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: test-ingress
namespace: test
annotations:
kubernetes.io/ingress.class: "traefik"
cert-manager.io/cluster-issuer: letsencrypt
spec:
rules:
- host: test.<mydomain>
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: nginx-svc
port:
number: 80
tls:
- secretName: test.<mydomain>