web-dev-qa-db-ja.com

GCE / GKEでHTTPSを有効にする

Google CloudでKubernetesを使用してWebサイトを実行しています。現時点では、httpを通じてすべてが順調に機能しています。しかし、私はhttpsが必要です。私にはいくつかのサービスがあり、そのうちの1つは外界に公開されています。それをWebと呼びましょう。私の知る限り、これは変更が必要な唯一のサービスです。 GCPの[Networking]セクションで静的IPおよびTCP/SSLロードバランサーssl-LBを作成し、作成したweb.yamlでそのLBを使用しようとしました。サービスの作成は次のように行き詰まります。

Error creating load balancer (will retry): Failed to create load 
balancer for service default/web: requested ip <IP> is 
neither static nor assigned to LB
aff3a4e1f487f11e787cc42010a84016(default/web): <nil>

しかしGCPによると、私のIPは静的です。ハッシュ化されたLBはどこにも見つからず、とにかくssl-LBに割り当てる必要があります。これを適切に割り当てるにはどうすればよいですか?

詳細:

ここにweb.yamlの内容があります

apiVersion: v1
kind: Service
metadata:
name: web
labels:
  ...
spec:
  type: LoadBalancer
  loadBalancerIP: <RESERVED STATIC IP> 
ports:
- port: 443
  targetPort: 7770
selector:
  ...
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: web
spec:
  replicas: 1
  template:
    metadata:
      labels:
        ...
  spec:
    containers:
    - name: web
      image: gcr.io/<PROJECT>/<IMAGE NAME>
      ports:
      - containerPort: 7770
17
Jaakko Vainio

これについてはまだ触れていないので、KubernetesのセットアップにGoogle Container Engine(GKE)を使用していることを前提としています。

サービスリソースマニフェストで Type to LoadBalancer を設定すると、GKE上のKubernetesはGCEを使用してネットワーク負荷分散(L4ロードバランサー)を自動的に設定します。独自のカスタムサーバーまたはnginx/Apacheなどを使用して、ポッドの接続を終了する必要があります。

(HTTP/HTTPS)L7ロードバランサーを設定することが目的である場合(そうであるように見えます)、 IngressリソースをKubernetesで使用する方が簡単で簡単です (で始まります v1.1)。 GKEは、この設定でGCE HTTP/HTTPS L7負荷分散を自動的に設定します。

GKEによってGCEロードバランサーで自動的にプロビジョニングされるTLS証明書を追加できます。

このセットアップには、次の利点があります。

  1. URLパスとポートごとにサービスを指定します( URL Maps GCEからこれを構成します)。
  2. GCEロードバランサでSSL/TLSを設定して終了します( Target proxies GCEからこれを構成します)。
  3. GKEは、GCEも自動的に構成します health checks あなたのサービスに。

あなたの責任は、ポッド内のリクエストを処理するバックエンドサービスロジックを処理することです。

HTTP負荷分散の設定に関するGKEページ で詳細情報を入手できます。

GKEを使用すると、上記の両方の使用例で利用可能なGCEロードバランサのサポートが自動的に使用され、手動で GCEロードバランシング を設定する必要がないことに注意してください。

23
Tuxdude