別の IAP コネクタを既存の GKE クラスタにデプロイ

このページでは、本番環境の既存の Google Kubernetes Engine(GKE)クラスタに追加のオンプレミス IAP コネクタをデプロイするプロセスについて説明します。Google Cloud SDKkubectl、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 による構成とデプロイ

  1. まず、この GitHub リポジトリをクローニングします。

  2. リポジトリをクローニングした iap-connector/terraform-and-helm/iap-connector/helm/values ディレクトリにある Helm チャート values_example.yaml を構成します。

    このチャートは、単一のグローバル ロードバランサー プロキシを共有するクラスタに 2 つの Ambassador プロキシを介して 2 つのアプリケーションをデプロイする方法を示しています。プロキシには、アプリごとに 1 つずつ、2 つの証明書がバインドされています。このサンプル ファイルは、単一の上り(内向き)プロキシの制限までサポートするようにカスタマイズできます。

    YAML ファイルが構成されたら、values.yaml として保存します。

  3. Helm を初期化します。

    helm init
    
  4. GKE クラスタにインストールする権限を Helm に付与します。

    kubectl create clusterrolebinding cluster-admin-binding --clusterrole cluster-admin
      --user system:serviceaccount:kube-system:default
    
  5. Helm チャートをインストールして、グローバル ロードバランサー、GKE の上り(内向き)サービス、バックエンド サービスを、YAML ファイルで定義されているように作成します。

    helm install --name my-release ./iap-connector -f values.yaml
    

HTTP バックエンド アプリケーションの構成

デフォルトでは、Ambassador は HTTPS を使用して対象のリソースにデプロイしますが、HTTP バックエンドを使用することもできます。デプロイを HTTP に変更するには、次の操作を行います。

  1. 編集するサービスを探します。

    kubectl get services
    
  2. 前のコマンドからサービス名をコピーして、サービスを編集します。

    kubectl edit service <serviceName>
    
  3. service で始まる行を見つけて、プロトコルを https から http に、ポート番号を 80 に変更します。

    service:http://example.service.internal:80
    
  4. TLS を指定する行を削除します。

    tls:true