产品动态
公告
产品发布记录
http://<YOUR_DOMAIN>/.well-known/acme-challenge/<TOKEN>。YOUR_DOMAIN 是被校验的域名。TOKEN 是 ACME 协议客户端负责放置的文件,在此处 ACME 客户端即 cert-manager,通过修改或创建 Ingress 规则来增加临时校验路径并指向提供 TOKEN 的服务。Let’s Encrypt 会对比 TOKEN 是否符合预期,校验成功后就会颁发证书。\\(cert-manager\\) 将创建从该令牌和账户密钥派生的 TXT 记录,并将该记录放在 _acme-challenge.<YOUR_DOMAIN>。Let’s Encrypt 将向 DNS 系统查询该记录,找到匹配项即可颁发证书。DNS-01 方式,其限制较少,功能较全。quay.io 进行拉取。也可以执行以下命令,使用同步到国内 CCR 的镜像一键安装:
name,表示会自动修改指定 Ingress 的规则来暴露校验所需的临时 HTTP 路径,如果指定 class,则表示会自动新增 Ingress,可参考以下 示例。prod/web,可参考以下代码示例创建 Issuer:apiVersion: cert-manager.io/v1kind: Issuermetadata:name: letsencrypt-http01namespace: prodspec:acme:server: https://acme-v02.api.letsencrypt.org/directoryprivateKeySecretRef:name: letsencrypt-http01-account-keysolvers:- http01:ingress:name: web # 指定被自动修改的 Ingress 名称
prod/web,以暴露校验所需的临时路径。参考以下代码示例,自动新增 Ingress:apiVersion: cert-manager.io/v1kind: Issuermetadata:name: letsencrypt-http01namespace: prodspec:acme:server: https://acme-v02.api.letsencrypt.org/directoryprivateKeySecretRef:name: letsencrypt-http01-account-keysolvers:- http01:ingress:class: nginx # 指定自动创建的 Ingress 的 ingress class
apiVersion: cert-manager.io/v1kind: Certificatemetadata:name: test-mydomain-comnamespace: prodspec:dnsNames:- test.mydomain.com # 要签发证书的域名issuerRef:kind: Issuername: letsencrypt-http01 # 引用 Issuer,指示采用 http01 方式进行校验secretName: test-mydomain-com-tls # 最终签发出来的证书会保存在这个 Secret 里面



apiVersion: v1kind: Secretmetadata:name: cloudflare-api-token-secretnamespace: cert-managertype: OpaquestringData:api-token: <API Token> # 将 Token 粘贴到此处,不需要 base64 加密。
apiVersion: cert-manager.io/v1kind: ClusterIssuermetadata:name: letsencrypt-dns01spec:acme:privateKeySecretRef:name: letsencrypt-dns01server: https://acme-v02.api.letsencrypt.org/directorysolvers:- dns01:cloudflare:email: my-cloudflare-acc@example.com # 替换成你的 cloudflare 邮箱账号,API Token 方式认证非必需,API Keys 认证是必需apiTokenSecretRef:key: api-tokenname: cloudflare-api-token-secret # 引用保存 cloudflare 认证信息的 Secret
apiVersion: cert-manager.io/v1kind: Certificatemetadata:name: test-mydomain-comnamespace: defaultspec:dnsNames:- test.mydomain.com # 要签发证书的域名issuerRef:kind: ClusterIssuername: letsencrypt-dns01 # 引用 ClusterIssuer,指示采用 dns01 方式进行校验secretName: test-mydomain-com-tls # 最终签发出来的证书会保存在这个 Secret 里面
$ kubectl get certificate -n prodNAME READY SECRET AGEtest-mydomain-com True test-mydomain-com-tls 1m
READY 为 False:则表示签发失败,可以通过 describe 命令查看 event 来排查失败原因。$ kubectl describe certificate test-mydomain-com -n prod
READY 为 True:则表示签发成功,证书将保存在所指定的 Secret 中。例如,default/test-mydomain-com-tls。可以通过 kubectl 查看,其中 tls.crt 是证书,tls.key 是密钥。$ kubectl get secret test-mydomain-com-tls -n default...data:tls.crt: <cert>tls.key: <private key>
apiVersion: networking.k8s.io/v1beta1kind: Ingressmetadata:name: test-ingressannotations:kubernetes.io/Ingress.class: nginxspec:rules:- host: test.mydomain.comhttp:paths:- path: /webbackend:serviceName: webservicePort: 80tls:hosts:- test.mydomain.comsecretName: test-mydomain-com-tls
文档反馈