Kubernetes的x509证书身份验证的Ingress注释

use*_*782 6 annotations kubernetes

我正在尝试使用kubernetes入口注释规则以启用X509身份验证。我的入口Yaml文件定义如下:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  namespace: bdf-opengie-test
  name: keycloak-opengie-test-ssl
  labels:
    app: keycloak-opengie
  annotations:
   nginx.ingress.kubernetes.io/auth-tls-verify-client: "on"
   nginx.ingress.kubernetes.io/auth-tls-secret: "opengie-tls-secret"
   nginx.ingress.kubernetes.io/auth-tls-verify-depth: "3"
   nginx.ingress.kubernetes.io/auth-tls-pass-certificate-to-upstream: "true"
spec:
  rules:
  - host: keycloak-opengie-test-ssl.bdf-clu4.paas.eclair.local
    http:
      paths:
      - path: /
        backend:
          serviceName: keycloak-opengie
          servicePort: http
  tls:
   - hosts:
     - keycloak-opengie-test-ssl.bdf-clu4.paas.eclair.local
Run Code Online (Sandbox Code Playgroud)

当我调用应用程序URL时,我期望看到一个弹出窗口要求提供证书,但是没有任何反应。注释在入口定义中似乎没有任何作用。有人可以告诉我我的入口定义出了什么问题。我正在使用Nginx Ingress:0.15.0和Kubernetes 1.10.5

Kon*_*tin 4

首先,您丢失了为您的域颁发的 SSL 文件的秘密。(如果我们谈论的是本机 k8s 秘密管理)您的秘密应该由以下方式创建:

kubectl --namespace bdf-opengie-test create secret tls <secret_name> --key <key_path> --cert <cert_path>
Run Code Online (Sandbox Code Playgroud)

那么你的Ingress.yml 文件应该包含这个秘密:

 ...
 tls:
   - hosts:
     - keycloak-opengie-test-ssl.<domain>
     secretName: <secret_name>
Run Code Online (Sandbox Code Playgroud)

只有在此之后,您才能考虑任何 auth 注释或其他不起作用的内容

注意:秘密是一个命名空间对象。