Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
21
Help us understand the problem. What is going on with this article?
@tatsuhiro-t

nghttpx Ingress controller

More than 3 years have passed since last update.

はじめに

最初にIngressについて説明する必要があるだろう。誤解を恐れずにいろいろと端折って文章にするならば、Kubernetesというコンテナーオーケストレーションシステムが用意しているIngressは、Kubernetesクラスタ内で稼働しているHTTPベースのサービスに対して、クラスタ外部からアクセスする手段を提供するものである。Kubernetesが定義するIngressは、ただのリソースであり、HTTPにおけるホストとパスでどのサービスへリクエストをフォワードすればよいかのルールを記述する。実際にリクエストをIngressリソースの通りにフォワードする機能は、Kubernetes本体では提供されていない。この隙間機能、すなわち、Ingressリソースを読んでいい感じにL7ロードバランサーを設定してリクエストが期待通りにフォワードされるようにする機能を提供するものこそが、Ingress controllerなのである。nghttpx Ingress controllerとは、L7ロードバランサーにnghttpxを採用した、Ingress controllerである。

Kubernetesについて知りたい方は、 http://qiita.com/advent-calendar/2016/kubernetes をどうぞ。

nghttpxについて知りたい方は、少し古いですが http://qiita.com/tatsuhiro-t/items/99a2fd61d0fb16d7241b をどうぞ。合わせて読みたい公式マニュアルnghttpx - HTTP/2 proxy - HOW-TOもどうぞ。

https://github.com/kubernetes/contrib/tree/master/ingress/controllers にはnginxを使ったIngress controller実装が公開されている。nghttpx Ingress controllerは、nginx Ingress controllerをベースに開発した。

どこがHTTP/2と関係あるのか?

もちろん関係がありますとも。nghttpxはHTTP/2をサポートしたL7ロードバランサーである。nghttpxはフロント、およびバックエンドの接続の両方でHTTP/2をサポートしているため、gRPCのロードバランスにも使うことができる。ただしnghttpxはバックエンドの接続では、HTTP/1もしくはHTTP/2のどちらを使うのかを事前に指定しておく必要がある。ところが、Ingressにはその指定するようなフィールドは存在しない。nghttpx Ingress controllerでは、Ingressリソースのannotationsにバックエンド接続に関する追加設定を書くことにして問題を回避した。以下の例では、greeterというサービスのport 50051に対する接続については、h2、すなわちHTTP/2プロトコルを使うように設定している:

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

詳しくは、https://github.com/zlabjp/nghttpx-ingress-lb#additional-backend-connection-configuration を読んでほしい。

21
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
21
Help us understand the problem. What is going on with this article?