LoginSignup
4
2

More than 5 years have passed since last update.

GCPのHTTP(S)ロードバランサでセッションアフィニティを設定する

Last updated at Posted at 2017-12-28

問題

GKEのIngressで作成したHTTP(S)ロードバランサについて、Ingressコントローラからはセッションアフィニティが設定できません。
このページのaffinityの欄を確認すると、2017/12/28現在はnginxコントローラのみ対応しており、GCPのロードバランサは対応していないことがわかります。

つまり、以下のようにgceコントローラを使用している場合は、セッションアフィニティのannotationsは使用できません。

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: eccube-ingress
  namespace: 
  annotations:
    kubernetes.io/ingress.class: "gce"
 .
 .
 .

解決策

gcloudコマンドを使ってセッションアフィニティを設定できます。
Ingressがデプロイされ、HTTP(S)ロードバランサが立ち上がった後、以下のようなスクリプトを実行します。

enable-affinity.sh
backend_list=(`gcloud compute backend-services list | awk -v ORS=" " '!/NAME/{gsub("\n"," ",$1); print $1 }'`)
for v in "${backend_list[@]}"
do
    gcloud compute backend-services update "$v" --session-affinity client_ip --global
done

上記のスクリプトでは現存するバックエンドサービス全てに対して、セッションアフィニティClientIPを設定しています。

4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2