2017-10-13 16 views
1

nginx-ingressコントローラを使用してGKEに新しいkubernetesクラスタをセットアップしました。 TLSは機能していません。偽の証明書を使用しています。私はレポをしたように、構成の詳細の多くはKubernetes NGINX入力コントローラがTLS証明書を取得しない

あり - https://github.com/jobevers/test_ssl_ingress

要するに手順は、GKEのロードバランサ

  • せずに新しいクラスタを

    • を作成し、私とのTLS秘密を作成しますキーと証明書
    • nginx-ingressデプロイメント/ポッドの作成
    • イングレスコントローラの作成

    nginx-ingressの設定はhttps://zihao.me/post/cheap-out-google-container-engine-load-balancer/です(ingress-nginxのレポの多くの例とよく似ています)。

    私ingress.yamlは、私はカール実行すると、私はまだ、デフォルトの証明書を使用していることを示している

    $ curl -kv https://35.196.134.52 
    [...] 
    * common name: Kubernetes Ingress Controller Fake Certificate (does not match '35.196.134.52') 
    [...] 
    * issuer: O=Acme Co,CN=Kubernetes Ingress Controller Fake Certificate 
    [...] 
    

    を取得the example one

    とほぼ同じです。

    どうすれば私を使って取得するのですか?


    Ingress definition

    apiVersion: extensions/v1beta1 
    kind: Ingress 
    metadata: 
        name: test-ssl-ingress 
        annotations: 
        kubernetes.io/ingress.class: "nginx" 
    spec: 
        tls: 
        - secretName: tls-secret 
        rules: 
        - http: 
         paths: 
         - path:/
         backend: 
          serviceName: demo-echo-service 
          servicePort: 80 
    

    Creating the secret

    kubectl create secret tls tls-secret --key tls/privkey.pem --cert tls/fullchain.pem 
    

    デバッグさらに、証明書が発見され、サーバー上に存在している:

    $ kubectl -n kube-system exec -it $(kubectl -n kube-system get pods | grep ingress | head -1 | cut -f 1 -d " ") -- ls -1 /ingress-controller/ssl/ 
    default-fake-certificate-full-chain.pem 
    default-fake-certificate.pem 
    default-tls-secret-full-chain.pem 
    default-tls-secret.pem 
    

    そして、ログから、私は

    kubectl -n kube-system log -f $(kubectl -n kube-system get pods | grep ingress | head -1 | cut -f 1 -d " ") 
    [...] 
    I1013 17:21:45.423998  6 queue.go:111] syncing default/test-ssl-ingress 
    I1013 17:21:45.424009  6 backend_ssl.go:40] starting syncing of secret default/tls-secret 
    I1013 17:21:45.424135  6 ssl.go:60] Creating temp file /ingress-controller/ssl/default-tls-secret.pem236555242 for Keypair: default-tls-secret.pem 
    I1013 17:21:45.424946  6 ssl.go:118] parsing ssl certificate extensions 
    I1013 17:21:45.743635  6 backend_ssl.go:102] found 'tls.crt' and 'tls.key', configuring default/tls-secret as a TLS Secret (CN: [...]) 
    [...] 
    

    しかし、nginx.confを見て、そのはまだ偽の本命を使用して参照してください。

    $ kubectl -n kube-system exec -it $(kubectl -n kube-system get pods | grep ingress | head -1 | cut -f 1 -d " ") -- cat /etc/nginx/nginx.conf | grep ssl_cert 
         ssl_certificate       /ingress-controller/ssl/default-fake-certificate.pem; 
         ssl_certificate_key      /ingress-controller/ssl/default-fake-certificate.pem; 
    
  • +0

    入力定義と秘密の定義を追加できますか? –

    +0

    @NorbertvanNobelenが元の質問を更新しました – jobevers

    答えて

    2

    は入力定義ことが判明し次のようにする必要があります。

    apiVersion: extensions/v1beta1 
    kind: Ingress 
    metadata: 
        name: test-ssl-ingress 
        annotations: 
        kubernetes.io/ingress.class: "nginx" 
    spec: 
        tls: 
        - hosts: 
         - app.example.com 
         secretName: tls-secret 
        rules: 
        - host: app.example.com 
         http: 
         paths: 
         - path:/
          backend: 
          serviceName: demo-echo-service 
          servicePort: 80 
    

    ルールnee dsは、tlsの下にあるホストエントリの1つに一致します。

    関連する問題