kubectl 获取证书:使用证书管理器找不到资源
kubectl get certificates : No resources found using cert-manager
我不明白为什么我无法使用 cert-manager
在 K8S 上获取证书
我安装了证书管理器:https://github.com/cert-manager/cert-manager/releases/download/v1.7.1/cert-manager.crds.yaml
我创建了 ClusterIssuer
apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
name: letsencrypt-staging
spec:
acme:
email: user@example.com
server: https://acme-staging-v02.api.letsencrypt.org/directory
privateKeySecretRef:
name: example-issuer-account-key
solvers:
- http01:
ingress:
class: nginx
我创建了入口
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
annotations:
kubernetes.io/ingress.class: nginx
cert-manager.io/cluster-issuer: letsencrypt-staging
spec:
rules:
- host: mytest.example.fr
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: webapp
port:
number: 80
tls:
- hosts:
- mytest.example.fr
secretName: letsencrypt-staging
但是当我尝试获取证书时,我得到 'no resources found'
有什么想法吗?
感谢您的帮助
cert-manager 不会自动创建证书。
您必须自己创建一个 YAML。并使用您已经创建的发行人名称
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
name: my-certificate
namespace: default
spec:
secretName: set-a-new-name-here
issuerRef:
name: letsencrypt-staging
kind: ClusterIssuer
commonName: mytest.example.fr
dnsNames:
- mytest.example.fr
如果您不想创建种类证书,您可以使用
apiVersion: cert-manager.io/v1alpha2
kind: ClusterIssuer
metadata:
name: cluster-issuer-name
namespace: development
spec:
acme:
server: https://acme-v02.api.letsencrypt.org/directory
email: harsh@example.com
privateKeySecretRef:
name: secret-name
solvers:
- http01:
ingress:
class: nginx-class-name
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
annotations:
kubernetes.io/ingress.class: nginx-class-name
cert-manager.io/cluster-issuer: cluster-issuer-name
nginx.ingress.kubernetes.io/rewrite-target: /
name: example-ingress
spec:
rules:
- host: sub.example.com
http:
.
. #Path and service configs
.
.
tls:
- hosts:
- sub.example.com
secretName: secret-name
ingress 会调用 clusterisser 并且它会 auto-create certificate 给你.
如果您是更高版本 1.18 或 above[,请根据需要更新 ingress 资源=13=]
备注
请确保您在 clusterissue 中使用 URL https://acme-v02.api.letsencrypt.org/directory
否则您将在浏览器中获得 fake 证书。
作为参考,您可以在此处阅读更多内容:
确保你的入口指向正确的 clusterissuer 如果
你创建了新的。
也不要使用相同的 privateKeySecretRef:name: secret-name 你
需要删除它或使用 new name 作为 fake certificate
现在存储在那个秘密中。
我不明白为什么我无法使用 cert-manager
在 K8S 上获取证书我安装了证书管理器:https://github.com/cert-manager/cert-manager/releases/download/v1.7.1/cert-manager.crds.yaml
我创建了 ClusterIssuer
apiVersion: cert-manager.io/v1 kind: ClusterIssuer metadata: name: letsencrypt-staging spec: acme: email: user@example.com server: https://acme-staging-v02.api.letsencrypt.org/directory privateKeySecretRef: name: example-issuer-account-key solvers: - http01: ingress: class: nginx
我创建了入口
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: annotations: kubernetes.io/ingress.class: nginx cert-manager.io/cluster-issuer: letsencrypt-staging spec: rules: - host: mytest.example.fr http: paths: - path: / pathType: Prefix backend: service: name: webapp port: number: 80 tls: - hosts: - mytest.example.fr secretName: letsencrypt-staging
但是当我尝试获取证书时,我得到 'no resources found'
有什么想法吗?
感谢您的帮助
cert-manager 不会自动创建证书。 您必须自己创建一个 YAML。并使用您已经创建的发行人名称
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
name: my-certificate
namespace: default
spec:
secretName: set-a-new-name-here
issuerRef:
name: letsencrypt-staging
kind: ClusterIssuer
commonName: mytest.example.fr
dnsNames:
- mytest.example.fr
如果您不想创建种类证书,您可以使用
apiVersion: cert-manager.io/v1alpha2
kind: ClusterIssuer
metadata:
name: cluster-issuer-name
namespace: development
spec:
acme:
server: https://acme-v02.api.letsencrypt.org/directory
email: harsh@example.com
privateKeySecretRef:
name: secret-name
solvers:
- http01:
ingress:
class: nginx-class-name
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
annotations:
kubernetes.io/ingress.class: nginx-class-name
cert-manager.io/cluster-issuer: cluster-issuer-name
nginx.ingress.kubernetes.io/rewrite-target: /
name: example-ingress
spec:
rules:
- host: sub.example.com
http:
.
. #Path and service configs
.
.
tls:
- hosts:
- sub.example.com
secretName: secret-name
ingress 会调用 clusterisser 并且它会 auto-create certificate 给你.
如果您是更高版本 1.18 或 above[,请根据需要更新 ingress 资源=13=]
备注
请确保您在 clusterissue 中使用 URL
https://acme-v02.api.letsencrypt.org/directory
否则您将在浏览器中获得 fake 证书。作为参考,您可以在此处阅读更多内容:
确保你的入口指向正确的 clusterissuer 如果 你创建了新的。
也不要使用相同的 privateKeySecretRef:name: secret-name 你 需要删除它或使用 new name 作为 fake certificate 现在存储在那个秘密中。