kubernetes-ingress - Kubernetes 证书未为 cert-manager 创建
问题描述
我无法使用 cert-manager 创建证书。
我正在关注本指南 https://docs.cert-manager.io/en/latest/getting-started/install/kubernetes.html
这有效:
antonswanevelder$ kubectl get pods --namespace cert-manager
NAME READY STATUS RESTARTS AGE
cert-manager-69b4f77ffc-4296b 1/1 Running 0 9m5s
cert-manager-cainjector-576978ffc8-2mxz6 1/1 Running 0 2d13h
cert-manager-webhook-c67fbc858-sdjff 1/1 Running 1 2d13h
但是运行测试
kubectl describe certificate -n cert-manager-test
不产生任何东西。
有什么想法可以解决这个问题吗?
解决方案
重新创建 K8s 集群并按照上面 cert-manager 页面中的步骤进行操作。我犯的一个主要错误是在我的 Ingress 中引用了错误的命名空间。
请注意使用 cert-manager.io/cluster-issuer
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
annotations:
# add an annotation indicating the issuer to use.
cert-manager.io/cluster-issuer: letsencrypt-prod
还要注意使用 cert-manager v11 时 apiVersion 和求解器的细微变化。
apiVersion: cert-manager.io/v1alpha2
kind: ClusterIssuer
metadata:
name: letsencrypt-prod
spec:
acme:
# You must replace this email address with your own.
# Let's Encrypt will use this to contact you about expiring
# certificates, and issues related to your account.
email: youremail@domain.com
server: https://acme-v02.api.letsencrypt.org/directory
privateKeySecretRef:
# Secret resource used to store the account's private key.
name: letsencrypt-prod
# Add a single challenge solver, HTTP01 using nginx
solvers:
- http01:
ingress:
class: nginx
最后可能值得注意的是 Lets-encrypt 需要指向一个有效页面才能提供证书。确保您的域指向正确,并且页面在该域的根目录下提供。prod 上有一个速率限制器,因此最好与 staging issuer 合作,直到提供证书。如果您运行以下代码,它应该显示 CertificateCreated。
kubectl describe ingress
推荐阅读
- ruby-on-rails - rails options_for_select 更新表单
- c - C - 循环遍历所有可能的小写字符串
- azure-keyvault - Azure 数据工厂参数
- c# - 当键盘设置为其他语言时,SendKeys.SendWait 为英文
- web2py - 不可写字段上的智能网格验证
- unity3d - Unity 在构建期间崩溃
- python - 如何使用 SqlAlchemy-Marshmallow 更改字段名称?
- windows - 无法启动 PostgreSQL 11.2。尝试删除所有内容,现在 PostgreSQL 11.2 拒绝安装并出现错误
- react-native - 在反应本机导航中动态更改标题标题
- tensorflow - tensorflow 或 keras 中语音帧的上下文扩展