已添加 SSL 证书,但显示 "Kubernetes Ingress controller fake certificate"

标签 ssl kubernetes google-cloud-platform

我有以下问题。
我是 GCP/Cloud 的新手,我在 GKE 中创建了一个集群并在那里部署了我们的应用程序,在集群中安装了 nginx 作为 POD,我们公司有一个授权的 SSL 证书,我已经在 GCP 的证书中上传了该证书。
在 DNS 服务中,我创建了一条与 Ingress 的 IP 匹配的 A 记录。
当我在浏览器中调用 URL 时,它仍然显示该网站仍然不安全,并显示消息“Kubernetes Ingress controller fake certificate”。
我使用了以下指南 https://cloud.google.com/load-balancing/docs/ssl-certificates/self-managed-certs#console_1
但是我无法执行第 3 步“将 SSL 证书与目标代理相关联”,因为它询问“URL 映射”并且我无法在 GCP 控制台中找到它。
有没有人像我一样经历过同样的问题,或者如果有人帮助我,那就太好了。
谢谢并恭祝安康,

最佳答案

我可以通过在 ingress-nginx-controller 部署中添加一个额外的参数来解决这个问题。
对于上下文:我的 TLS key 位于默认命名空间,并被命名为 letsencrypt-secret-prod ,所以我想将其添加为 Nginx Controller 的默认 SSL 证书。
我的第一个解决方案是编辑 deployment.yaml Nginx Controller 并在 containers[0].args 末尾添加列出以下行:

- '--default-ssl-certificate=default/letsencrypt-secret-prod'
这使得 yaml 的那部分看起来像这样:
      containers:
        - name: controller
          image: >-
            k8s.gcr.io/ingress-nginx/controller:v1.2.0-beta.0@sha256:92115f5062568ebbcd450cd2cf9bffdef8df9fc61e7d5868ba8a7c9d773e0961
          args:
            - /nginx-ingress-controller
            - '--publish-service=$(POD_NAMESPACE)/ingress-nginx-controller'
            - '--election-id=ingress-controller-leader'
            - '--controller-class=k8s.io/ingress-nginx'
            - '--ingress-class=nginx'
            - '--configmap=$(POD_NAMESPACE)/ingress-nginx-controller'
            - '--validating-webhook=:8443'
            - '--validating-webhook-certificate=/usr/local/certificates/cert'
            - '--validating-webhook-key=/usr/local/certificates/key'
            - '--default-ssl-certificate=default/letsencrypt-secret-prod'
但我使用的是 Helm chart :ingress-nginx/ingress-nginx ,所以我希望这个配置在 values.yaml该图表的文件,以便我以后可以在必要时对其进行升级。
所以读取值文件我替换了属性:controller.extraArgs ,看起来像这样:
  extraArgs: {}
为了这:
  extraArgs:
    default-ssl-certificate: default/letsencrypt-secret-prod
这将使用正确位置的参数重新启动部署。
现在我可以在不指定 tls.secretName 的情况下使用入口。对于他们每个人来说,这太棒了。
这是一个使用 HTTPS 为我工作的示例入口:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: some-ingress-name
  annotations:
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/backend-protocol: "HTTP"
spec:
  rules:
  - http:
      paths:
      - path: /some-prefix
        pathType: Prefix
        backend:
          service:
            name: some-service-name
            port:
              number: 80

关于已添加 SSL 证书,但显示 "Kubernetes Ingress controller fake certificate",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71127151/

相关文章:

node.js - 使用 NodeJS 时如何在 AWS EC2 上下载证书和私钥

kubernetes - 使用 "resource"模板/步骤和 "get"操作提取 Argo 工作流程中的资源并传递到下游步骤?

kubernetes - Helm 在 Amazon EKS 上安装 Fluentd-Cloudwatch

docker - minikube : not able to connect a locally deployed nginx service

node.js - 谷歌云任务: How to update a tasks time to live?

ssl - Kubernetes Ingress SSL 证书问题

security - 任何解决Google 15,000至75,000美元OAuth安全评估的方法

ssl - 是否可以在 WAS7 和 ActiveDirectory 之间的 LDAP 上配置两种方式的 ssl

java - 如何使用 Java/Tomcat 在 Azure 上设置 SSL

wordpress - SSL 证书因内容不匹配而无效?