「private-cluster」オプションを使用してGoogle Kubernetes Engineを実行しています。また、環境にリモートアクセスできるように「承認済みマスターネットワーク」を定義しました。これは問題なく機能します。次に、Google Cloud Buildを使用して、ある種のCI/CDパイプラインをセットアップしたいと思います。新しいDockerイメージが正常にビルドされたら、この新しいイメージをGKEに自動的にデプロイする必要があります。新しいパイプラインを最初に起動したときに、GKEへのデプロイが失敗しました-エラーメッセージは、「サーバーに接続できません:ダイヤルtcp xxx.xxx.xxx.xxx:443:i/oタイムアウト」のようなものでした。接続タイムアウトの根本的な原因であると疑われて「承認されたマスターネットワーク」オプションがあったため、許可されたネットワークに0.0.0.0/0を追加し、Cloud Buildジョブを再度開始しました-今回はすべてが順調に進んだ後Dockerイメージが作成され、GKEにデプロイされました。良い。
残っている唯一の問題は、インターネット全体が私のKubernetesマスターにアクセスすることを本当に許可したくないということです-それは悪い考えですね?
許可されたマスターネットワークを使用し、クラウドビルドを介してデプロイできるようにして、アクセスを絞り込むためのよりエレガントなソリューションはありますか?
現在 Cloud BuildマシンをVPCに追加することはできません。同様に、Cloud BuildはビルドマシンのIP範囲をアナウンスしません。したがって、そのVPC内のGCEに「ssh踏み台インスタンス」または「プロキシインスタンス」を作成せずに、今日これを行うことはできません。
これはすぐに変わると思います。 GCBは、GKEプライベートクラスタとプライベートクラスタがまだベータ機能である前に存在していました。
最終的に次のことを行いました。
1)cloudbuild.yamlからデプロイ手順を削除します
2)プライベートクラスタ内にKeelをインストールし、クラウドビルダー/レジストリプロジェクトでpub/subエディター権限を付与します
キールはイメージの変更を監視し、設定に基づいて自動的に展開します。
Vmsを追加したり、何らかの要塞/ sshホストを実行したりせずに、shaハッシュイメージの更新をプッシュするようになったため、これはうまくいきました。