Cloud Intelligence™Cloud Intelligence™

Cloud Intelligence™

NATなしで実現するGKE運用——kubeIPという選択肢

By Aviv LauferJun 21, 20182 min read

このページはEnglishDeutschEspañolFrançaisItalianoPortuguêsでもご覧いただけます。

1 owrbjei zwuebf8vv4ww9g

セキュリティ上の理由から、送信元IPアドレスによるホワイトリスト登録を求められるアプリケーションは少なくありません。しかし現状、Google Kubernetes EngineにはGKEクラスターへ静的IPアドレスプールを割り当てる機能がなく、複雑なNATベースの仕組みを構築する必要があります。コストがかさむうえ運用も難しく、ロードバランシングや冗長化のために煩雑なルール設計も避けられません。

kubeIPは、この課題に対するソリューションです。予約済みのアドレスプールから静的な外部IPアドレスをGKEノードに割り当て、Kubernetes APIを継続的に監視して新しいノードを検知し、必要な変更を反映します。

kubeIPはGoで書かれており、GKEクラスター自体には一切手を加えず、Podとしてクラスター内で動作します。設定はkubeIPのConfigMapで定義した環境変数を通じて行います。

apiVersion:

v1

data: KUBEIP_LABELKEY: "kubeip" KUBEIP_LABELVALUE: "my-gke-cluster-1" KUBEIP_NODEPOOL: "default-pool" kind:

ConfigMap

metadata: labels: app:

kubeip

name:

kubeip-config

namespace:

default

kubeIPはKubernetesクラスターのイベントリスナーとして自身を登録します。新しいノードが作成されると、予約プールから利用可能な静的IPアドレス(GKEクラスター名がラベルとして付与されたもの)を探し、そのノードに割り当てます。利用可能なアドレスがない場合は、何も行いません。

デプロイを簡単にするため、Docker HubにkubeIPのDockerイメージを公開しています(docker pull doitintl/kubeip)。kubeIPのGitHubリポジトリをクローンして、ソースコードからご自身でビルドすることもできます。

ほかの記事もぜひご覧ください。ブログをチェックするか、AvivのTwitterをフォローしてみてください。