为什么我得到错误“backend - 404 error”当尝试在kubernetes中部署tls入口时没有错误的事件

3zwtqj6y  于 2022-11-02  发布在  Kubernetes
关注(0)|答案(2)|浏览(120)

我尝试部署一个简单的入口服务,当入口没有安全功能(tls)时,它可以工作,但是当我包括证书tls时,它总是返回“backend - 404 error”
我已经安装了“cert manager”、“ingress-nginx”,并且已经检查了此安装是否正常

编辑:我解释了我正在做的所有步骤
EDIT 2:我已将证书管理器的版本更新为v1.5.4

这些步骤是:

**1.-**为我的ip安装nginx控制器

helm install bitnami/nginx-ingress-controller --set controller.service.loadBalancerIP="[MY-STATIC-IP]",rbac.create=true --generate-name

**2.-**应用部署和服务(应用程序yaml)

apiVersion: apps/v1
kind: Deployment
metadata:
  name: taxisbahiadeploy
  labels:
    type: endpoints-app
spec:
  replicas: 1
  selector:
    matchLabels:
      app: taxisbahiadeploy
  template:
    metadata:
      labels:
        app: taxisbahiadeploy
    spec:
      containers:
      - name: taxisbahiadeploy
        image: gcr.io/google-samples/hello-app:1.0
        imagePullPolicy: Always
        ports:
          - containerPort: 8080
---
apiVersion: v1
kind: Service
metadata:
  name: taxisbahia
spec:
  ports:
    - port: 8080
      targetPort: 8080
  selector:
    app: taxisbahiadeploy

**3.-**配置加密

kubectl apply -f https://github.com/jetstack/cert-manager/releases/download/v1.5.4/cert-manager.crds.yaml

kubectl create namespace cert-manager

helm repo add jetstack https://charts.jetstack.io

helm repo update

helm install \
  cert-manager \
  --namespace cert-manager \
  --version v1.5.4 \
  jetstack/cert-manager

**4-**套用出版者(issuer.yaml)

apiVersion: cert-manager.io/v1alpha2
kind: Issuer
metadata:
  name: letsencrypt-staging
spec:
  acme:
    server: https://acme-staging-v02.api.letsencrypt.org/directory
    email: 'fco@ggggg.com'
    privateKeySecretRef:
      name: letsencrypt-staging
    solvers:
      - http01:
          ingress:
            class: nginx
---
apiVersion: cert-manager.io/v1alpha2
kind: Issuer
metadata:
  name: letsencrypt-prod
spec:
  acme:
    server: https://acme-v02.api.letsencrypt.org/directory
    email: 'fco@ggggg.com'
    privateKeySecretRef:
      name: letsencrypt-prod
    solvers:
      - http01:
          ingress:
            class: nginx

**5.-**最后一步,这是失败的入口(ingress-tls.yaml)

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: esp-ingress
  annotations:
    kubernetes.io/ingress.class: nginx
    cert-manager.io/issuer: "letsencrypt-staging"
spec:
  tls:
  - hosts:
    - domain.com
    secretName: esp-tls
  rules:
    - host: domain.com
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: taxisbahia
                port:
                  number: 8080
e4yzc0pl

e4yzc0pl1#

我认为您的TLS域部分应该类似于检查您的主机

spec:
  tls:
  - hosts:
    - example.example.com
    secretName: quickstart-example-tls

参考:https://cert-manager.io/docs/tutorials/acme/ingress/

bwntbbo3

bwntbbo32#

首先,请确保您确实正在访问https://yourapp.com
有同样的问题,但后来我意识到我实际上是在尝试HTTP,这是不再可用后,TLS被添加。

相关问题