将https配置到我的服务(kubernetes、nginx ingress、letsencrypt、cert manager)的正确方法是什么?

将https配置到我的服务(kubernetes、nginx ingress、letsencrypt、cert manager)的正确方法是什么?,kubernetes,google-cloud-platform,lets-encrypt,nginx-ingress,cert-manager,Kubernetes,Google Cloud Platform,Lets Encrypt,Nginx Ingress,Cert Manager,我只想在我这边描述一下它是如何配置的。我已使用本教程在我的Kubernetes上安装了cert Manager: 我已经检查了它是否已安装,并且它是: 我还有入口资源和下一个配置: apiVersion: extensions/v1beta1 kind: Ingress metadata: annotations: certmanager.k8s.io/acme-http01-edit-in-place: "true" certmanager.k8s.io/cluster

我只想在我这边描述一下它是如何配置的。我已使用本教程在我的
Kubernetes
上安装了
cert Manager

我已经检查了它是否已安装,并且它是:

我还有
入口资源
和下一个配置:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  annotations:
    certmanager.k8s.io/acme-http01-edit-in-place: "true"
    certmanager.k8s.io/cluster-issuer: letsencrypt-issuer
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/from-to-www-redirect: "true"
    nginx.ingress.kubernetes.io/rewrite-target: /$1
  name: boonotes-ingress-resource
  namespace: default
spec:
  rules:
  - host: www.bnsfun.com
    http:
      paths:
      - backend:
          serviceName: booknotes-front-end-service
          servicePort: 80
        path: /?(.*)
  - host: www.bnsfun.com
    http:
      paths:
      - backend:
          serviceName: booknotes-back-end-service
          servicePort: 3000
        path: /api/?(.*)
  tls:
  - hosts:
    - www.bnsfun.com
    secretName: letsencrypt-certs
status:
  loadBalancer:
    ingress:
    - ip: some ip
此外,我还配置了证书:

kubectl描述证书簿记证书

Name:         booknotes-certificate
Namespace:    default
Labels:       <none>
Annotations:  kubectl.kubernetes.io/last-applied-configuration:
                {"apiVersion":"certmanager.k8s.io/v1alpha1","kind":"Certificate","metadata":{"annotations":{},"name":"booknotes-certificate","namespace":"...
API Version:  certmanager.k8s.io/v1alpha1
Kind:         Certificate
Metadata:
  Creation Timestamp:  2019-11-17T04:51:57Z
  Generation:          2
  Resource Version:    7257970
  Self Link:           /apis/certmanager.k8s.io/v1alpha1/namespaces/default/certificates/booknotes-certificate
  UID:                 fbe1d9c0-08f5-11ea-82b3-42010a80017a
Spec:
  Acme:
    Config:
      Domains:
        www.bnsfun.com
      http01:
        Ingress:  boonotes-ingress-resource
  Common Name:    www.bnsfun.com
  Dns Names:
    www.bnsfun.com
  Issuer Ref:
    Kind:       ClusterIssuer
    Name:       letsencrypt-issuer
  Secret Name:  letsencrypt-certs
Events:         <none>

让我们换一条路走,Letsencrypt官方文档说他们将不再支持低于0.8的版本,因此我建议您安装Jetstack提供的cert manager(您可以找到),以便为其安装helm图表

下面,对于配置,请注意,如果该帖子中提到的api版本在集群发行者的情况下不支持,那么使用

apiVersion: cert-manager.io/v1alpha2
请注意,证书中提到的tls机密名称将由cert manager自动生成,一旦您将该机密名称修补到入口规则中的tls,它将自动启动验证域的acme质询


它将解决该问题,并且在域验证后证书的状态将更改为就绪

让我们换一种方式,Letsencrypt官方文档说他们将不再支持0.8以下的版本,因此我建议您安装Jetstack提供的cert manager,您可以找到,为其安装舵图

下面,对于配置,请注意,如果该帖子中提到的api版本在集群发行者的情况下不支持,那么使用

apiVersion: cert-manager.io/v1alpha2
请注意,证书中提到的tls机密名称将由cert manager自动生成,一旦您将该机密名称修补到入口规则中的tls,它将自动启动验证域的acme质询


它将解决问题,并且在域验证后证书的状态将更改为就绪

已安装名为letsencrypt issuer的群集颁发者?是的,我也已附加,请检查,对不起,在我的微型手机上没有看到这一点^^。您检查了cert manager pod的日志吗?通常这是开始故障排除的地方。关于你刚刚删除的关于JSX的问题:有几个JSX编译器,Babel只是其中之一(不过现在很难找到其他的)。默认情况下,Babel的JSX支持假定JSX组件的“maker”函数应该是
React.createElement
,但您可以使用来制作任何您想要的东西。因此,如果您的生成器函数被调用为
foo
,则将pragma设置为
foo
,并且
Hi-there
将被转换为
foo(例如,{props:{className:“x”},“Hi-there”)。是否已安装名为letsencrypt issuer的群集颁发者?是的,我也已附加,请检查,对不起,没有在我的微型手机上看到此^^。您是否检查了cert manager pod的日志?通常这是开始故障排除的地方。关于你刚刚删除的关于JSX的问题:有几个JSX编译器,Babel只是其中之一(不过现在很难找到其他的)。默认情况下,Babel的JSX支持假定JSX组件的“maker”函数应该是
React.createElement
,但您可以使用来制作任何您想要的东西。因此,如果您的生成器函数被调用为
foo
,则将pragma设置为
foo
,并且
Hi-there
将被转换为
foo(例如,{props:{className:“x”},“Hi-there”)