首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Kubernetes nginx-ingress TLS问题

Kubernetes nginx-ingress TLS问题
EN

Stack Overflow用户
提问于 2018-01-26 14:41:57
回答 2查看 1.2K关注 0票数 4

我的公司有一个现有的fake.example.com CA证书和一个将fake.example.com映射到负载均衡器IP的记录

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

在集群中,我部署了nginx-ingress舵机图表,将https的NodePort公开为30200。

我从上面的证书中创建了一个名为test- k8s的TLS秘密。

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

代码语言:javascript
复制
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

所以,如果我执行

代码语言:javascript
复制
curl https://{ip for k8s node}:30200/myapp/ping -H 'Host:fake.example.com' -k --verbose

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

代码语言:javascript
复制
* 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文件中确认,对于server_name fake.exampe.com,ssl_certificate、ssl_certificate_key和ssl_trusted_certificate都指向正确的位置

所以我的问题是,在这个场景中,是否可以配置nginx来使用正确的证书?

EN

回答 2

Stack Overflow用户

发布于 2018-07-14 03:26:22

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

代码语言:javascript
复制
➜  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
票数 0
EN

Stack Overflow用户

发布于 2018-10-06 17:28:34

如果没有可用的证书(您说是在Kubernetes Ingress Controller Fake Certificate中),该证书是无效的,或者如果控制器在.spec.tls[]中找不到匹配的主机,或者没有配置默认的TLS证书,则入口控制器将默认为TLS。

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

  1. 您的test-secret无效,可能是因为您丢失了一个中间证书或CA证书。
  2. 您的test-secret位于错误的命名空间中
  3. tls秘密没有被匹配,(可能是因为使用了https://{ip for k8s node}:30200/myapp/ping -H 'Host:fake.example.com'-k标志?)

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48463615

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档