如何通过GKE上的Ingress-Nginx正确配置Kubernetes仪表板

时间:2019-10-17 16:14:27

标签: kubernetes google-kubernetes-engine kubernetes-ingress

我遇到了错误:

[lua] certificate.lua:89: call(): failed to set DER cert: SSL_add0_chain_cert() failed, context: ssl_certificate_by_lua*, 

在Ingress配置为在GKE上提供kubernetes仪表板时。此麻烦仅在仪表板上实现。在其他名称空间中,模拟配置可以正常工作。我的意思是使用相同的SSL证书。

Kubernetes版本: v1.14.7-gke.10

入口控制器版本: 0.26.1

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  annotations:
    ingress.kubernetes.io/force-ssl-redirect: "true"
    kubernetes.io/ingress.class: nginx
    kubernetes.io/tls-acme: "true"
    nginx.ingress.kubernetes.io/secure-backends: "true"
  name: kubernetes-dashboard
spec:
  rules:
  - host: gke-dashboard.example.com
    http:
      paths:
      - backend:
          serviceName: kubernetes-dashboard
          servicePort: 443
        path: /
  tls:
  - hosts:
    - gke-dashboard.example.com
    secretName: example-ssl

1 个答案:

答案 0 :(得分:0)

Ingress的配置正确。密钥在SSL证书捆绑文件中。 我在一个包含5个证书的crt文件中使用了证书链。

示例代码段为:

-----BEGIN CERTIFICATE-----
MIIF4zCCBMugAwIBAhIMUCJSvK6eipIjbvq7MA0GCSqGSIb3DQEBCwUAMEwxGzAJ
...
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIETTCCAzWgAwIBAgILBAABBAAABRE9wNjEwDQYJKoZIhvcNAQELBQAwVzELMAkG
...
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIEMTCCAxmgAwIBAgILBAAAAhhBMYnGOdwwDQYJKoZIhvcNAQELBQAwTDEgMB4G
...
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIELzCCAxegAwIBUGILBAASOMEBL07hNwIwDQYJKoZIhvcNAQEFBQAwVzELMAkG
...
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIEDjCCAvagAwIBAgILBAATEXTBHkSl82UwDQYJKoZIhvcNAQEFBQAwVzELMAkG
...
-----END CERTIFICATE-----

在我的捆绑包中,我有几个不必要的重叠证书。这就是为什么在转换为DER格式的过程中出现错误的原因。

删除不必要的证书后,问题得以解决。

顺便说一句,这样的捆绑软件在 Ingress-controller版本0.20.0 中可以正常工作。 因此,在进行故障排除时,我一直认为证书中没有错误。

也许此信息对某人有用。