让我们通过证书管理器在您的Kubernetes Inress中加密的SSL证书 [英] SSL certificates from Let’s Encrypt in your Kubernetes Ingress via cert-manager
本文介绍了让我们通过证书管理器在您的Kubernetes Inress中加密的SSL证书的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在尝试与证书管理器v0.16.0一起工作,以便让证书加密。我使用microk8,并遵循了几个教程,但没有一个让我达到目标。
使用此tutorialLink时,我无法创建颁发者,并在尝试应用它时收到错误消息:
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
找不到该服务,因为这不是它的名称。尝试查找:certmgr-cert-Manager-webhook,但服务名称是:cert-Manager-webhook。也没有DNS别名或任何可以证明这一点的东西。创建证书管理器和Web挂钩的部署如下:
如果我将颁发者的类型从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"
我们非常感谢一些调试帮助。
-更多信息 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
推荐答案
看起来证书管理器没有正确设置,您可以尝试从官方文档中删除并设置一次证书管理器:https://cert-manager.io/docs/installation/kubernetes/
您可以直接设置最新版本,这一个YAML包含了CRD、部署、服务的所有内容:
kubectl apply -f https://github.com/jetstack/cert-manager/releases/download/v1.3.0/cert-manager.yaml
应用YAML后,您可以检查部署
kubectl get pods -n cert-manager
如果一切正常,您可以应用集群颁发者和入口的配置来获取将存储到Kubernetes密钥中的SSL/TLS证书。
这里是一个简单而正确的ClusterIssuer和入口YAML(请注意,如果可能,您正在尝试使用临时APIhttps://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
这篇关于让我们通过证书管理器在您的Kubernetes Inress中加密的SSL证书的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文