Closed sinmetal closed 6 years ago
とりあえず概要を書いておく GKE のドキュメントには Ingress を使って GCE HTTP(S) LB を使って外部にサービスを公開する方法が書かれている。 https://cloud.google.com/kubernetes-engine/docs/tutorials/http-balancer?hl=en https://cloud.google.com/kubernetes-engine/docs/tutorials/configuring-domain-name-static-ip?hl=en しかし、ヘルスチェック等の落とし穴にハマる人が多く、 GKE に予め入っている Ingress の実装であるingress-gce の README.md を読みに行かないと分からないことが多い。 https://github.com/kubernetes/ingress-gce/blob/master/README.md
GCE Ingress のヘルスチェックの挙動を確認すること https://github.com/kubernetes/ingress-gce/blob/master/README.md#health-checks
ヘルスチェックのパスはデフォルトで /
readinessProbe
の httpGet
を設定した場合は変更可能ヘルスチェックのステータスコードは 200 でないと失敗する
readinessProbe
や他のクラウドプロバイダでは 2xx, 3xx なら成功なので引っかかりがち
kubectl apply -f
や kubectl edit
での更新が反映されない時は kubectl delete
& kubectl create
もしくは kubectl replace --force
で作り直す(IP アドレスに注意)
x-forwarded-for
ヘッダの値を使う https://cloud.google.com/compute/docs/load-balancing/http/?hl=en#components130.211.0.0/22
, 35.191.0.0/16
は nginx real ip module 等で飛ばして良い
service.spec.externalTrafficPolicy: Local
を設定する