1

Google Container Engine(Kubernetes)のhttpbin.orgサービスのクローンである単純なDockerサーバーを公開するDockerコンテナを配備しようとしています。Kubernetes Ingressを使用して、Google Cloud Load BalancerがHTTPSではなくHTTPSを実行するIngress

これは私が使用しているサービスの定義です:

apiVersion: v1 
kind: Service 
metadata: 
    name: httpbin 
    labels: 
    app: httpbin 
spec: 
    type: LoadBalancer 
    ports: 
    - port: 80 
    targetPort: 3000 
    protocol: TCP 
name: http 
selector: 
    app: httpbin 

を侵入は次のように定義されています。私は2つのIPアドレス、直接結合した1つを見ることができるサービス/イングレスのダッシュボードで

apiVersion: extensions/v1beta1 
kind: Ingress 
metadata: 
    name: httpbin-tls 
    annotations: 
    kubernetes.io/ingress.global-static-ip-name: "http-bin-static-ip" 
spec: 
    tls: 
    - secretName: positive-ssl 
    backend: 
    serviceName: httpbin 
    servicePort: 80 

(一時的な)サービスとIngressに結合された静的IPへ両方をポート80で直接呼び出すことは、魅力のように機能します。

ことが行われた後、私は静的IPのレコードを作成し、BalancerがGKEダッシュボードでOKでしたロードを確保しました:

GKE Load Balancers Dashboard

HTTPSエンドポイントがたくさんに従って作業する必要があります私がチェックしたチュートリアルとマニュアルはありますが、そうではありません! HTTPSへのすべての呼び出しは、HTTPポートにリダイレクトされます(301)。

カール-vからの出力:私はいかなる種類の自動リダイレクトを作成していない

* Rebuilt URL to: https://httpbin-1.mydomain.com/ 
* Trying XXX.XX.XX.XX... 
* TCP_NODELAY set 
* Connected to httpbin-1.mydomain.com (XXX.XX.XX.XX) port 443 (#0) 
* TLS 1.2 connection using TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 
* Server certificate: mydomain.com 
* Server certificate: COMODO ECC Domain Validation Secure Server CA 2 
* Server certificate: COMODO ECC Certification Authority 
> GET/HTTP/1.1 
> Host: httpbin-1.mydomain.com 
> User-Agent: curl/7.51.0 
> Accept: */* 
> 
< HTTP/1.1 301 Moved Permanently 
< Date: Fri, 03 Mar 2017 18:01:23 GMT 
< Transfer-Encoding: chunked 
< Connection: keep-alive 
< Cache-Control: max-age=3600 
< Expires: Fri, 03 Mar 2017 19:01:23 GMT 
< Location: http://httpbin-1.mydomain.com/ 
< 
* Curl_http_done: called premature == 0 
* Connection #0 to host httpbin-1.mydomain.com left intact 

は、厳密に(KubernetesとGKEから)公式マニュアルに従ったが、私はこれを越えて行くことができませんよ。新しいスタック、新しいロードバランサなど、スタック全体を最初から再作成しようとしましたが、同じ結果が得られました。

私には何が欠けていますか? Tks!

+0

秘密のファイルを実際の値なしで表示できますか?あなたが使っているキーに興味があります。 – Gambo

+0

「秘密ファイル」とはどういう意味ですか? SSL証明書ですか?私はすでにAWSで同じ証明書を使用しており、SSL診断でもチェックしていますが、証明書は問題ありません。 –

答えて

1

AFAIK GLBは正しい転送を行うことができません。そのシナリオを解決するには、入力後にサービス内のWebサーバーを使用する必要があります。

あなたの現在の行動は、あなたの進入からその部分を削除し

annotations: kubernetes.io/ingress.global-static-ip-name: "http-bin-static-ip"

によって引き起こされているように見えるし、あなたのHTTPSセッションは、あなたの入口で終了することが表示されるはずです。

+0

スタティックIPがなければ、HTTPとHTTPSの終端は異なるIPを持つので、DNSのAレコードを設定することはできません。どのようにアクセスするのですか? –

+1

現在のLoadBalancerではなく、SVC.typeをNodePortに変更する必要があります(その行に気付くだけです)。次に、入力はHTTPとHTTPSの両方のIPを取得します。 –

+0

あなたの提案された変更で、GLBにIPを割り当てなかっただけで、フロントエンド構成のないロードバランサだけで運が悪いです。 –

関連する問題