このページでは、本番環境の既存の Google Kubernetes Engine(GKE)クラスタに追加のオンプレミス IAP コネクタをデプロイするプロセスについて説明します。Google Cloud SDK、kubectl
、Helm などのツールに精通している方を対象として説明します。
初めてのオンプレミス IAP コネクタのデプロイの概要については、オンプレミス アプリでの IAP の有効化をご覧ください。
始める前に
デプロイの準備が以下のものでできていることを確認してください:
- 既存の GKE クラスタ
- クラスタは、VPC ネイティブ(IP エイリアス)を使用するように設定する必要があります。その VPC は、VPC のルート(NAT ゲートウェイなど)を介してインターネットにアクセスできる必要があります。
- GKE クラスタが単一のクラスタから複数の IAP コネクタ インスタンスを提供するには、個々のアプリケーションにサービスを提供する Pod とともに自動スケーリングするように構成する必要があります。
- GKE クラスタ(ノード / Pod)からバックエンド / オンプレミス インスタンスへのトラフィックを許可するファイアウォール ルール
- Google マネージド SSL 証明書と静的外部 IP
- ローカル クライアント マシンにインストールされたHelm(バージョン 2.0.0 以降)パッケージ マネージャー
- Ambassador イメージを取得するためにサブネット上に構成された Cloud NAT
- ターゲット プールとターゲット プロキシのために説明されている TLS 証明書の制限に適応するために、グローバル ロードバランサの数が増えました
Helm による構成とデプロイ
まず、この GitHub リポジトリをクローニングします。
リポジトリをクローニングした
iap-connector/terraform-and-helm/iap-connector/helm/values
ディレクトリにある Helm チャートvalues_example.yaml
を構成します。このチャートは、単一のグローバル ロードバランサー プロキシを共有するクラスタに 2 つの Ambassador プロキシを介して 2 つのアプリケーションをデプロイする方法を示しています。プロキシには、アプリごとに 1 つずつ、2 つの証明書がバインドされています。このサンプル ファイルは、単一の上り(内向き)プロキシの制限までサポートするようにカスタマイズできます。
YAML ファイルが構成されたら、
values.yaml
として保存します。Helm を初期化します。
helm init
GKE クラスタにインストールする権限を Helm に付与します。
kubectl create clusterrolebinding cluster-admin-binding --clusterrole cluster-admin --user system:serviceaccount:kube-system:default
Helm チャートをインストールして、グローバル ロードバランサー、GKE の上り(内向き)サービス、バックエンド サービスを、YAML ファイルで定義されているように作成します。
helm install --name my-release ./iap-connector -f values.yaml
HTTP バックエンド アプリケーションの構成
デフォルトでは、Ambassador は HTTPS を使用して対象のリソースにデプロイしますが、HTTP バックエンドを使用することもできます。デプロイを HTTP に変更するには、次の操作を行います。
編集するサービスを探します。
kubectl get services
前のコマンドからサービス名をコピーして、サービスを編集します。
kubectl edit service <serviceName>
service
で始まる行を見つけて、プロトコルをhttps
からhttp
に、ポート番号を80
に変更します。service:http://example.service.internal:80
TLS を指定する行を削除します。
tls:true