我有以下问题。
我是 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/