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
これについてはまだ触れていないので、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証明書を追加できます。
このセットアップには、次の利点があります。
URL Maps
GCEからこれを構成します)。Target proxies
GCEからこれを構成します)。health checks
あなたのサービスに。あなたの責任は、ポッド内のリクエストを処理するバックエンドサービスロジックを処理することです。
HTTP負荷分散の設定に関するGKEページ で詳細情報を入手できます。
GKEを使用すると、上記の両方の使用例で利用可能なGCEロードバランサのサポートが自動的に使用され、手動で GCEロードバランシング を設定する必要がないことに注意してください。