Kubernetes:Nginx Ingress Annotation ----> nginx.ingress.kubernetes.io/secure-backends

时间:2018-03-23 19:45:31

标签: ssl nginx kubernetes

问题:我正在尝试使用ingress来访问托管在我的k8群集上的保险库群集。当前使用nginx入口控制器0.10.2版本。

我正在使用Ingress指向Vault集群的自定义生成的TLS证书。我在与入口相同的名称空间中拥有TLS证书。

问题:无法通过提供带有ca.crt的vault status命令进入后端。

设置的Env变量

        VAULT_ADDR=https://vault.ingress.staging.k8s.com
        VAULT_SKIP_VERIFY=true

无法获得状态,即入口处的流量正在停止。当我检查入口控制器的日志时,它说

7 backend_ssl.go:146] unexpected error generating SSL certificate with full intermediate chain CA certs: Invalid certificate.

我已经生成了与Ingress资源的公共名称匹配的自定义TLS证书。因此无法弄清楚为什么会发生这种情况。可能是因为入口注释使用错误。

我的问题是ingress.kubernetes.io/secure-backends: 'true'出了什么问题,如果是,你可以提供有关如何使用它的信息吗?

备注:

  • 我正在使用相应的入口类,并且确实知道没有问题。

  • 如果入口出现问题,我已经部署了几个示例来检查。即使这样也可以。

*任何人都可以提供nginx.ingress.kubernetes.io/secure-backends *

的工作示例

任何与此问题相关的解决方案都将受到赞赏!!!

Ingress.yaml

kind: Ingress
apiVersion: extensions/v1beta1
metadata:
  name: vault
  namespace: default
  annotations:
    ingress.kubernetes.io/secure-backends: 'true'
    kubernetes.io/ingress.class: "k8s"
spec:
  tls:
    - hosts:
        - vault.ingress.staging.k8s.com
      secretName: vault-server-ingress-tls
  rules:
    - host: vault.ingress.staging.k8s.com
      http:
        paths:
          - path: /
            backend:
              serviceName: example
              servicePort: 8200

1 个答案:

答案 0 :(得分:3)

您可以尝试:

kubernetes.io/ingress.class: "<your_class>"
nginx.ingress.kubernetes.io/secure-backends: "true"
nginx.ingress.kubernetes.io/ssl-passthrough: "true"

请记住,ssl-passthrough要求必须将额外的命令行参数添加到nginx-ingress-controller部署(默认情况下禁用):

--enable-ssl-passthrough

参考。 https://github.com/kubernetes/ingress-nginx/blob/master/docs/user-guide/nginx-configuration/annotations.md#ssl-passthrough