我尝试使用k8s中的证书管理器将ssl设置为我的域。
首先,我创建了两个服务并应用了入口,这样我就可以使用http请求.访问我的服务。
,然后我用yml文件安装了证书管理器。
$ kubectl apply -f https://github.com/jetstack/cert-manager/releases/latest/download/cert-manager.yaml之后,我设置了颁发者和证书。
apiVersion: cert-manager.io/v1
kind: Issuer
metadata:
name: letsencrypt-staging
namespace: default
spec:
acme:
# Staging API
server: https://acme-staging-v02.api.letsencrypt.org/directory
email: xxx@xxx.xxx
privateKeySecretRef:
name: letsencrypt-staging
solvers:
- selector: {}
http01:
ingress:
class: nginx
---
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
name: miniapi-staging
namespace: default
spec:
secretName: miniapi-staging-certificate
issuerRef:
name: letsencrypt-staging
commonName: xx1.xx.xxx
dnsNames:
- xx1.xx.xxx
- xx2.xx.xxx我描述了证书,它向我展示了
作为秘密签发证书不存在
然后我描述了挑战,它给我展示了一些挂起的错误
等待HTTP-01挑战传播:未能执行自检查GET请求'http://xxx.xxx.xx/.well-known/acme-challenge/AsGBYEbUD8VRYoJsXQQu5b0ntGSS5quq2M7kRx0sFZs':Get "http://xx.xxx.xx/.well-known/acme-challenge/AsGBYEbUD8VRYoJsXQQu5b0ntGSS5quq2M7kRx0sFZs":EOF
和我检查了上面的url是有效的,它给我显示了一个ong行字符串(我修改了真实的url)。
我试了很多次,但都是同样的错误,所以我做错了什么,希望有人能把我从这里救出来。
顺便说一句,k8s很难学,你们是怎么学的?
发布于 2022-10-12 10:48:03
为了排除此错误消息,我遵循了证书生命周期流。
总之,我们感兴趣的资源是certificate、certificaterequest、order和challenge。我使用kubectl get和kubectl describe来了解这些资源的状态。
我开始删除已经创建的资源,删除后应该立即重新创建这些资源。考虑到流动是:
certificate -> certificaterequest -> order -> challenge
我开始从流的末尾删除和观察效果,因此遵循相反的流顺序:challenge,然后是order,然后是certificaterequest,最后是certificate。这没有起作用,但在仔细查看了所有资源之后,我注意到删除challenge失败了。正因为如此,已经产生的第二个挑战没有被处理。这很可能是因为第一个挑战是在DNS区域仍在处理时手动删除的。
为了解决这一问题,有必要删除第一个挑战。在这个GitHub的答案中,您可以看到如何做到这一点。
发布于 2021-07-26 11:10:20
该消息意味着证书管理器可以看到您已经请求了证书,但它还没有证书,因此它需要为您创建(发行)证书。
至于为什么发行卡停留在自动检查上,请确认从集群内部和外部检索URL都是有效的。
https://stackoverflow.com/questions/68527413
复制相似问题