Cloud Intelligence™Cloud Intelligence™

Cloud Intelligence™

Google AnthosとAWSで実現するマルチクラウドKubernetes(第2回)

By Mike SparrSep 24, 20204 min read

このページはEnglishDeutschEspañolFrançaisItalianoPortuguêsでもご覧いただけます。

第1回では、AWS上で動作するAnthos GKEのプレビュー版を取り上げ、Amazon Web Servicesにもたらされるユースケースや機能を紹介しました。今回はそのセットアップ方法を、無駄を省いた手順に沿って解説していきます。

Google公式の手順をできるだけシンプルにするため、一部のコマンドを書き直して流れの分断を減らし、手作業のクリック操作も省きました。Anthosプロダクトチームは、より多くの工程をCLIに集約してセットアップをさらに簡素化する取り組みを進めているので、今後も手順は楽になっていくはずです。本記事の一部も将来的に変わる可能性がある点はご了承ください。

本記事は、GoogleのAnthos GKEを掘り下げる全3回シリーズの第2回です。

アーキテクチャ

出典:Google

前提条件

  • Anthos(トライアル)が有効になっているGoogle Cloud Platform(GCP)アカウント
  • 有効なAmazon Web Services(AWS)アカウント
  • ローカルマシンのターミナル、またはリモートターミナルへのアクセス
  • JSONをCLIでパースするためのJQのインストール
  • TFコマンドを実行するためのTerraform CLIのインストール[任意]

TL;DR

本記事で扱う主な工程は4つ。各工程ごとにスクリプトを分けて解説します。

  1. AWSとGCPの両方でキーとIAMロールを作成し、anthos-gke CLIをダウンロードしてインストールします(現状、ダウンロードにはGoogleの承認が必要です。アカウントマネージャーへ早めに相談してください)。
  2. 管理クラスタ(コントロールプレーン)を構成し、その作成に使うTerraformスクリプトをブートストラップ。Terraformを実行してAWSをセットアップし、コントロールプレーンをインストールします。
  3. Terraformで最初のクラスタ設定をブートストラップし、AWSの踏み台ホストへトンネルを張ったうえで、kubectlを実行して最初のクラスタ(cluster-0)を作成します。
  4. クラスタにClusterRoleBindingを追加して認証トークンを生成し、GCP Cloud Consoleを新しいクラスタに接続。監視と管理を一元化します。

1\. キーの初期設定とAnthos CLIのダウンロード

AWS上のAnthos GKEに必要な前提条件(セットアップ)です。

上記のタスクをそのままターミナルにコピー&ペーストし、1つずつ実行していくのがおすすめです(初回はデバッグしやすいよう特に推奨)。完了後、以下のコマンドを実行すると、下のような出力が確認できるはずです。

2\. 管理クラスタ(コントロールプレーン)を作成する

anthos-gkeinitapplyを実行すると、CLIが作業ディレクトリにTerraformコードを生成し、それを適用してAWS上にインフラを構築します。続いて管理クラスタ(コントロールプレーン)がインストールされます。

anthos-gke CLIがマシン上にTerraformスクリプトを生成し、実行する様子

:うまくいかないときは、生成済みのTerraformスクリプトをそのまま使い、Terraform CLIから設定を再適用すれば問題ありません。

3\. 最初のクラスタを作成する

ここまで進められたら、おめでとうございます!技術的にはセットアップは完了しており、あとはAWSClusterAWSNodePoolのカスタムリソース定義(CRD)を使って、必要に応じてクラスタやノードプールを自由に作成できます。

生成されたTerraformコードには、コントロールプレーンに適用するマニフェストを出力する仕組みが用意されており、これを使えばGKE管理クラスタが新しいクラスタをプロビジョニングしてくれます。

ヒント:Terraformが出力するcluster-0.yamlを確認しましょう。マニフェストを適用する前にノードのmin/max値を引き下げておくと、クラウドコストを抑えられます。詳しくはGoogleのAnthos GKEアーキテクチャのページをご覧ください。

AWS上に最初のGKEクラスタを作成する

プロのコツ:watchコマンドでステータスを監視し、「Provisioned」になるのを待ちましょう。

CMD: watch kubectl get AWSClusters

4\. クラスタをGKE Hubに接続する

トークンを生成してクリップボードにコピーしたら、GCPコンソールに戻り、対象クラスタの「ログイン」をクリック。「トークン」を選択して、コピーしたトークンを貼り付けます。

GKE管理画面(GKE Hub)からAWSクラスタへ認証する様子

お疲れさまでした!

ここまでたどり着いた方は、ぜひご自身を労ってあげてください。実際にやってみると思ったほど手間はかからないはずです。スクリプトを個別に実行することも考慮し、各ファイルの冒頭には環境変数をいくつか入れてあります。コマンドを同じシェルでまとめてコピー&ペーストして実行する場合は、各ファイルの踏み台ホスト/プロキシ/コンテキスト関連の処理を省略でき、クラスタのセットアップと認証をスムーズに進められます。

次のステップ

次回は、クラスタへのworkloadsのデプロイ方法と、他のAWSサービスとの連携について解説します。

公開され次第このページにリンクを掲載しますので、ぜひまたお越しください。新しい記事の通知を受け取りたい方は、フォローもご活用いただけます。当社ブログhttps://blog.doit-intl.comでも幅広いトピックの記事を公開していますので、あわせてご覧ください。