让我们通过证书管理器在您的Kubernetes Inress中加密的SSL证书 [英] SSL certificates from Let’s Encrypt in your Kubernetes Ingress via cert-manager

查看:16
本文介绍了让我们通过证书管理器在您的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挂钩的部署如下:

cert-manager-0.16.0.yaml

如果我将颁发者的类型从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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆