当前位置: 首页 > 知识库问答 >
问题:

库伯内特斯nginx入口TLS问题

章涵蓄
2023-03-14

我的公司有一个伪造的CA证书。实例com和一张伪造地图的唱片。实例com连接到我们的负载平衡器的IP

负载平衡器正在将流量转发到我们的Kubernetes群集。

在集群中,我部署了nginx ingress helm图表,在30200处公开了https节点端口

我根据上述证书创建了一个名为test secret的k8s TLS机密。

我部署了一个带有服务“test”的应用程序,并安装了以下入口:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: test-ingress
  namespace: default
  annotations:
    kubernetes.io/ingress.class: nginx
spec:
  tls:
  - hosts:
    - fake.example.com
    secretName: test-secret
  rules:
    - host: fake.example.com
      http:
        paths:
        - path: /myapp
          backend:
            serviceName: test
            servicePort: 8080

所以,如果我执行

curl https://{ip for k8s node}:30200/myapp/ping -H 'Host:fake.example.com' -k --verbose

我从我的应用程序中得到了预期的响应,但我也看到了

* Server certificate:
*  subject: O=Acme Co; CN=Kubernetes Ingress Controller Fake Certificate
*  start date: Jan 25 20:52:16 2018 GMT
*  expire date: Jan 25 20:52:16 2019 GMT
*  issuer: O=Acme Co; CN=Kubernetes Ingress Controller Fake Certificate

我已经在nginx上确认了。conf文件,服务器名称为false。例如。com ssl_证书、ssl_证书_密钥和ssl_受信任_证书指向正确的位置

所以我的问题是,在这种情况下,是否可以配置nginx来使用正确的证书?

共有2个答案

海典
2023-03-14

当没有证书可用(您说是在测试秘密中),证书无效,或者控制器在中找不到匹配的主机时,入口控制器将默认为库伯内特斯入口控制器假证书。spec.tls[],或者您在没有配置默认TLS证书的情况下击中默认后端。

既然你能找到你的服务,那么我怀疑:

  1. 您的测试密钥无效,可能是因为您缺少中间证书或CA证书

当您前面有负载均衡器时,将您的入口控制器公开为NodePort是不寻常的。如果这是云部署,那么您将使用类型LoadBalancer。如果这是在前提下,您可以查看MetalLB

沈弘盛
2023-03-14

你必须创建一个名为test secret的秘密。

➜  charts git:(master) kubectl describe secret --namespace operation mydomain.cn-cert
Name:         mydomain.cn-cert
Namespace:    operation
Labels:       <none>
Annotations:  <none>

Type:  Opaque

Data
====
tls.crt:  3968 bytes
tls.key:  1678 bytes
 类似资料:
  • 我试图设置Kubernetes入口,将外部http流量路由到前端pod(路径/)和后端pod(路径/rest/*),但我总是得到400错误,而不是主nginx索引。html。 所以我在第https://cloud.google.com/kubernetes-engine/docs/tutorials/http-balancer页尝试了谷歌库伯内特斯的例子,但我总是得到400个错误。有什么想法吗?

  • 我有一个网站在kubernetes集群中运行。我可以在本地访问它,但希望通过internet访问它。(我有一个注册域),但外部IP一直挂起 我按照以下指示工作:https://dev.to/peterj/expose-a-kubernetes-service-on-your-own-custom-domain-52dd 这是服务和入口的代码 因此,我正在使用helm安装nginx控制器,但在那之后

  • 为了在minikube的k8s上运行php fpm应用程序,我缺少一些kubernetes ingress nginx配置。 k8s配置文件: 先前docker开发环境的docker Nginx映像上使用的Nginx服务器工作配置文件(Nginx位于docker中,是与php容器分离的容器): 在浏览器上访问minikube ip时,出现502错误。 我已经安装了运行以下命令的ingress ng

  • 我在K8S集群中面临一个奇怪的问题 基本上我有两个应用程序: identity manager(基于WSO2,但该问题与WSO2无关) 将管理X509身份验证的外部SAML2 IDP 为了使用这个外部SAML2 IDP,我配置了WSO2 当我尝试通过X509登录时,WSO2显示登录页面,我单击智能卡,重定向到外部SAML IDP。 在这种情况下,nginx入口为我提供了502个坏网关。如果我复制U

  • 我是整个Kubernetes社区的新手,目前我正在尝试使用Ingress Nginx来暴露仪表板。我试过几种方法,但我找不到一个很好的解释如何暴露仪表板入口。我现在拥有的只是一个仪表板,可以通过“kubectl port forward”访问。我还安装了Ingress Nginx,控制器正在运行。我应该如何开始为kubernetes仪表板创建入口?

  • 我正试图通过nginx入口从客户端上传文件。在收到413响应后,我在入口上设置了以下注释; 客户端是一个Angular应用程序。它在请求正文中发送文件的bas64字符串。我尝试过上传一些KB的图像,所以我绝对没有达到这些限制。我是库伯内特斯的新手。我是否需要重新启动入口以使这些注释生效? 我也尝试过创建一个ConfigMap; 仍然得到502。 不知道如何通过kubectl访问nginx.conf