use*_*338 3 certificate kubernetes kubernetes-ingress cert-manager
我正在尝试使用 cert-manager v0.16.0 进入,让我们加密证书。我使用 microk8s 并遵循了几个教程,但没有一个让我达到目标。
通过本教程链接,我一直在创建发行者,并在尝试应用它时收到错误消息:
kc apply -f clusterIssuer.yaml
namespace/cloud unchanged
Error from server (InternalError): error when creating "clusterIssuer.yaml": Internal error occurred: failed calling webhook "webhook.cert-manager.io": Post "https://certmgr-cert-manager-webhook.cert-manager.svc:443/mutate?timeout=10s": service "certmgr-cert-manager-webhook" not found
Run Code Online (Sandbox Code Playgroud)
找不到该服务,因为这不是它的名称。尝试查找:certmgr-cert-manager-webhook,但服务名称是:cert-manager-webhook。也没有 dns 别名或任何可以证明这一点的东西。创建 cert-manager 和 webhook 的部署是这样的:
如果我将发行者的类型从 ClusterIssuer 更改为 Issuer,我得到:
kc apply -f clusterIssuer.yaml
namespace/git created
error: unable to recognize "clusterIssuer.yaml": no matches for kind "Issuer" in version "cert-manager.io/v1"
Run Code Online (Sandbox Code Playgroud)
一些调试帮助将不胜感激。
--- 更多信息 clusterIssuer.yaml:
kind: Namespace
apiVersion: v1
metadata:
name: cloud
---
apiVersion: cert-manager.io/v1beta1
kind: Issuer
metadata:
name: letsencrypt-staging
namespace: cloud
spec:
acme:
# Staging API
server: https://acme-staging-v02.api.letsencrypt.org/directory
email: mail@mail.de
privateKeySecretRef:
name: cloud-account-key-staging
solvers:
- http01:
ingress:
class: nginx
Run Code Online (Sandbox Code Playgroud)
看起来 cert-manager 没有使用 CRD 正确设置,您可以尝试从官方文档中删除并设置 cert-manager 一次:https ://cert-manager.io/docs/installation/kubernetes/
您可以直接设置最新版本,这个 YAML 包含 CRD、部署、svc 的所有内容:
kubectl apply -f https://github.com/jetstack/cert-manager/releases/download/v1.3.0/cert-manager.yaml
Run Code Online (Sandbox Code Playgroud)
应用 YAML 后,您可以检查部署情况
kubectl get pods -n cert-manager
Run Code Online (Sandbox Code Playgroud)
如果一切正常,您可以应用集群颁发者和入口的配置来获取 SSL/TLS 证书,该证书将存储到 Kubernetes 密钥中。
这是Clusterissuer和ingress YAML的简单且正确的示例(请注意,您正在尝试使用 staging API https://acme-staging-v02.api.letsencrypt.org/directory 如果可能,请使用生产服务器地址,以便它适用于所有浏览器)
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:
paths:
- path: /api
backend:
serviceName: service-name
servicePort: 80
tls:
- hosts:
- sub.example.com
secretName: secret-name
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8424 次 |
| 最近记录: |