LoginSignup
14
7

More than 3 years have passed since last update.

限定公開クラスターのGKEノードにサクッとSSHする方法

Last updated at Posted at 2020-01-17

限定公開クラスターとは

公式ドキュメントにもあるように、限定公開クラスター(Private cluster)は、KubernetesのワーカーノードにパブリックIPを割り当てずにGKEクラスターを作成できる機能です。

限定公開クラスターを使うことで外部公開される箇所が減りAttack surfaceを狭めることができるほか、Google Cloudの他の機能との連携を内部NW経由で行うことができるようになります。

限定公開クラスターの面倒なところ

たまにワーカーノードにSSHしたくなるのですが、限定公開クラスターではワーカーノードにPublic IPが割り当てられないので、@sonots氏のこちらの記事のような対応が必要でした。

これもこれで便利なのですが、Podを展開しないといけないのは面倒です。

Cloud IAPを使ったTCPトンネリング

Cloud IAPはGCPにおける認証認可の仕組みで、いわゆるGoogleログイン機能を使ってGoogle Cloud上に展開したアプリケーションへのアクセス制御を行ったり、VMへのログインなどを制御できる仕組みです。これは原理的にはProxyの役割を果たすので、外の世界と中の世界を繋ぐ役割も果たしています。

Cloud IAPを使ったTCPトンネリングを使うと、Cloud IAPによって認証されたユーザーに対して任意の VPC内リソースのTCPポートをトンネルすることができます。これを応用し、プライベートIPを持つVMにSSHすることも可能です。

GKEのワーカーノードの実態はGCEなので、同様のことが実現できます。

まず↓ここでCloud IAPを有効化しておきます。
https://console.cloud.google.com/apis/library/iap.googleapis.com/

# プロジェクト名のセットをする
gcloud config set core/project プロジェクト名

# Cloud IAPのグローバルIPアドレス範囲からのSSHを許可するFWルール
gcloud compute firewall-rules create allow-iap-forwarding-ssh \
  --network=vpc-network \
  --allow=tcp:22 \
  --source-ranges=35.235.240.0/20

# 該当のノードに、Cloud IAPのトンネル経由でSSHする。Firewall ruleがある場合はフラグを指定しなくてもデフォルトでIAPを使ってくれるらしい
gcloud beta compute ssh --zone "該当ノードのゾーン" "GKEのワーカーノードのインスタンス名"

できた

べんり

14
7
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
7