- GCPでVPCとsubnetを作成します
- subnet内に限定公開クラスタを作成します
- 各ノードが外部IPアドレスを持たなくなります
- コントロールプレーンへのアクセス制限をかけ、全ての外部ネットワークからのアクセスを拒否します
- 外部ネットワークからkubectlコマンドが使えなくなります
- subnet内に踏み台サーバーとしてVMインスタンスを起動します
- 踏み台サーバー踏み台サーバーにIAPを用いてSSH接続します
- 踏み台サーバーから、GKEクラスタに対してkubectlコマンドを実行します
https://zenn.dev/nekoshita/articles/90b7b13caf5fd2
Terraform v0.14.5
のインストール- Google Cloud Platformのprojectを作成する
- GCP StorageのBucketを作成する
gcloud CLI
のインストール(VMインスタンスにSSH接続したい場合)
$ export GCP_PROJECT_ID="your-gcp-project-id"
$ export GCS_BUCKET_NAME="your-gcs-bucket-name"
$ export USER_MAIL="[email protected]"
$ bin/apply $GCP_PROJECT_ID $GCS_BUCKET_NAME $USER_MAIL
$ export GCP_PROJECT_ID="your-gcp-project-id"
$ export GCS_BUCKET_NAME="your-gcs-bucket-name"
$ export USER_MAIL="[email protected]"
$ bin/destroy $GCP_PROJECT_ID $GCS_BUCKET_NAME $USER_MAIL
$ export ZONE="asia-northeast1-a"
$ export VM_INSTANCE_NAME="bastion"
$ export GCP_PROJECT_ID="your-gcp-project-id"
# GCPのprojectを作成したgoogleアカウントでログインする(すでにログインしてる場合は不要)
$ gcloud auth login
# IAPを利用して踏み台サーバーにSSH接続する
$ gcloud beta compute ssh --zone $ZONE $VM_INSTANCE_NAME --project $GCP_PROJECT_ID --tunnel-through-iap
# kubectlコマンドをインストールする
$ sudo apt install kubectl
# クラスタの認証情報を取得する
$ gcloud container clusters get-credentials my-cluster --zone asia-northeast1-a
# podを取得できるかためしてみる
$ kubectl get pod --all-namespaces