让我们加密的K3

问题描述

我正在尝试让“让我们加密”在我的K3s集群上工作。我一直在关注下面的教程,但是由于它已经使用了一年多,所以我使用的是cert-manager的更高版本。

https://pascalw.me/blog/2019/07/02/k3s-https-letsencrypt.html

我正在执行以下命令

kubectl apply --validate=false -f https://github.com/jetstack/cert-manager/releases/download/v1.0.1/cert-manager.crds.yaml
helm repo add jetstack https://charts.jetstack.io
kubectl create namespace cert-manager
helm install cert-manager jetstack/cert-manager --namespace cert-manager

echo "apiVersion: cert-manager.io/v1beta1
kind: ClusterIssuer
metadata:
  name: letsencrypt-staging
spec:
  acme:
    email: my-email@gmail.com
    privateKeySecretRef:
      name: staging-issuer-account-key
    server: https://acme-staging-v02.api.letsencrypt.org/directory
    http01: {}
    solvers:
      - http01:
          ingress:
            class: traefik
        selector: {}
" | kubectl apply --validate=false -f -

我生成的入口资源如下所示

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  annotations:
    certmanager.k8s.io/acme-challenge-type: http01
    certmanager.k8s.io/issuer: letsencrypt-staging
    kubernetes.io/ingress.class: traefik
    meta.helm.sh/release-name: whoami-mn
    meta.helm.sh/release-namespace: whoami-mn-dev
  creationTimestamp: "2020-09-13T08:49:27Z"
  generation: 3
  labels:
    app.kubernetes.io/instance: whoami-mn
    app.kubernetes.io/managed-by: Helm
    app.kubernetes.io/name: whoami-mn
    app.kubernetes.io/version: "0.1"
    helm.sh/chart: whoami-mn-0.4.0
  managedFields:
  - apiVersion: extensions/v1beta1
    fieldsType: FieldsV1
    fieldsV1:
      f:status:
        f:loadBalancer:
          f:ingress: {}
    manager: traefik
    operation: Update
    time: "2020-09-13T10:08:21Z"
  - apiVersion: networking.k8s.io/v1beta1
    fieldsType: FieldsV1
    fieldsV1:
      f:metadata:
        f:annotations:
          .: {}
          f:certmanager.k8s.io/acme-challenge-type: {}
          f:certmanager.k8s.io/issuer: {}
          f:kubernetes.io/ingress.class: {}
          f:meta.helm.sh/release-name: {}
          f:meta.helm.sh/release-namespace: {}
        f:labels:
          .: {}
          f:app.kubernetes.io/instance: {}
          f:app.kubernetes.io/managed-by: {}
          f:app.kubernetes.io/name: {}
          f:app.kubernetes.io/version: {}
          f:helm.sh/chart: {}
      f:spec:
        f:rules: {}
        f:tls: {}
    manager: Go-http-client
    operation: Update
    time: "2020-09-13T12:37:32Z"
  name: whoami-mn
  namespace: whoami-mn-dev
  resourceVersion: "1127785"
  selfLink: /apis/extensions/v1beta1/namespaces/whoami-mn-dev/ingresses/whoami-mn
  uid: d4ff44a2-a45e-4ef4-ac53-e76c7603d91a
spec:
  rules:
  - host: whoami-mn.myhost.com
    http:
      paths:
      - backend:
          serviceName: whoami-mn
          servicePort: 8080
        path: /
        pathType: ImplementationSpecific
  tls:
  - hosts:
    - whoami-mn.myhost.com
    secretName: whoami-mn-tls
status:
  loadBalancer:
    ingress:
    - ip: 192.168.0.100

但是端点返回404,并且来自traefik的日志包含多个条目,如下所示

{"level":"error","msg":"Error configuring TLS for ingress whoami-mn-dev/whoami-mn: secret whoami-mn-dev/whoami-mn-tls does not exist","time":"2020-09-13T14:44:10Z"}

关于我在做什么错的任何线索吗?另外,请告诉我是否要发布其他内容

解决方法

实现此目的的关键是正确注释我的入口资源。

cert-manager.io/cluster-issuer: letsencrypt-staging

不是以下内容

certmanager.k8s.io/issuer: letsencrypt-staging

使用了cert-manager的1.0.1版本。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...