最新のnghttpx ingress controllerの情報をシェアします。
nghttpx ingress controllerについてはこのスライドで簡単に紹介しています。
--publish-service
これはnginx ingress controllerの--publish-serviceと同じ機能を提供するものです。
Ingress controllerは担当のIngressリソースの.status.loadBalancer.ingress[*]にロードバランサーのアドレスを追加します。nghttpx ingress contorllerの場合、デフォルトではingress controllerのPodのIPアドレスを追加するようになっています。
--publish-serviceフラグを使うと、指定したServiceのexternal IPsやLoadBalancerのアドレスを追加するように動作を変更します。
default-backend-config
nghttpx ingress controllerはingress.zlab.co.jp/default-backend-config
アノテーションをIngressリソースに記述することで、バックエンド接続の追加設定を行うことができます。
例:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: greeter
annotations:
ingress.zlab.co.jp/backend-config: '{"greeter": {"50051": {"proto": "h2"}}}'
spec:
rules:
- http:
paths:
- path: /helloworld.Greeter/
backend:
serviceName: greeter
servicePort: 50051
このアノテーションはjson形式で、Service名、サービスポートの組み毎に記述します。
新たに追加したingress.zlab.co.jp/default-backend-config
は、デフォルトのバックエンド設定を指定します。
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: greeter
annotations:
ingress.zlab.co.jp/default-backend-config: '{"affinity": "ip"}'
ingress.zlab.co.jp/backend-config: '{"greeter": {"50051": {"proto": "h2"}}}'
spec:
rules:
- http:
paths:
- path: /helloworld.Greeter/
backend:
serviceName: greeter
servicePort: 50051
とすると、default-backend-configの内容が合成され、greeter/50051のbackend-configは、{"proto": "h2", "affinity": "ip"}
となります。
affinity: cookie
ingress.zlab.co.jp/backend-config
のaffinityで利用できる手法にcookieが追加されました。
nghttpxがaffinity-cookie-name
で指定した名前のcookieを発行し、クライアントが送り返してくるcookieの内容に応じてバックエンドサーバーを選ぶようになります。