kubernetes

最新nghttpx ingress controller情報

最新の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の内容に応じてバックエンドサーバーを選ぶようになります。