arrow_back

Cloud SQL と Terraform

参加 ログイン
Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

Cloud SQL と Terraform

Lab 1時間 universal_currency_alt クレジット: 5 show_chart 中級
Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

GSP234

Google Cloud セルフペース ラボ

概要

このハンズオンラボでは、Terraform で Cloud SQL インスタンスを作成し、Cloud SQL Proxy を設定して、MySQL クライアントとの接続をテストする方法について学びます。

目標

このラボでは、次の作業を行います。

  • Cloud SQL インスタンスを作成する
  • Cloud SQL Proxy をインストールする
  • Cloud Shell を使用して MySQL クライアントとの接続をテストする

設定

[ラボを開始] ボタンをクリックする前に

こちらの手順をお読みください。ラボの時間は記録されており、一時停止することはできません。[ラボを開始] をクリックするとスタートするタイマーは、Google Cloud のリソースを利用できる時間を示しています。

このハンズオンラボでは、シミュレーションやデモ環境ではなく、実際のクラウド環境を使ってご自身でラボのアクティビティを行うことができます。そのため、ラボの受講中に Google Cloud にログインおよびアクセスするための、新しい一時的な認証情報が提供されます。

このラボを完了するためには、下記が必要です。

  • 標準的なインターネット ブラウザ(Chrome を推奨)
注: このラボの実行には、シークレット モードまたはシークレット ブラウジング ウィンドウを使用してください。これにより、個人アカウントと受講者アカウント間の競合を防ぎ、個人アカウントに追加料金が発生することを防ぎます。
  • ラボを完了するために十分な時間を確保してください。ラボをいったん開始すると一時停止することはできません。
注: すでに個人の Google Cloud アカウントやプロジェクトをお持ちの場合でも、このラボでは使用しないでください。アカウントへの追加料金が発生する可能性があります。

ラボを開始して Google Cloud コンソールにログインする方法

  1. [ラボを開始] ボタンをクリックします。ラボの料金をお支払いいただく必要がある場合は、表示されるポップアップでお支払い方法を選択してください。 左側の [ラボの詳細] パネルには、以下が表示されます。

    • [Google コンソールを開く] ボタン
    • 残り時間
    • このラボで使用する必要がある一時的な認証情報
    • このラボを行うために必要なその他の情報(ある場合)
  2. [Google コンソールを開く] をクリックします。 ラボでリソースが起動し、別のタブで [ログイン] ページが表示されます。

    ヒント: タブをそれぞれ別のウィンドウで開き、並べて表示しておきましょう。

    注: [アカウントの選択] ダイアログが表示されたら、[別のアカウントを使用] をクリックします。
  3. 必要に応じて、[ラボの詳細] パネルから [ユーザー名] をコピーして [ログイン] ダイアログに貼り付けます。[次へ] をクリックします。

  4. [ラボの詳細] パネルから [パスワード] をコピーして [ようこそ] ダイアログに貼り付けます。[次へ] をクリックします。

    重要: 認証情報は左側のパネルに表示されたものを使用してください。Google Cloud Skills Boost の認証情報は使用しないでください。 注: このラボでご自身の Google Cloud アカウントを使用すると、追加料金が発生する場合があります。
  5. その後次のように進みます。

    • 利用規約に同意してください。
    • 一時的なアカウントなので、復元オプションや 2 要素認証プロセスは設定しないでください。
    • 無料トライアルには登録しないでください。

その後このタブで Cloud Console が開きます。

注: 左上にある [ナビゲーション メニュー] をクリックすると、Google Cloud のプロダクトやサービスのリストが含まれるメニューが表示されます。 ナビゲーション メニュー アイコン

Cloud Shell をアクティブにする

Cloud Shell は、開発ツールと一緒に読み込まれる仮想マシンです。5 GB の永続ホーム ディレクトリが用意されており、Google Cloud で稼働します。Cloud Shell を使用すると、コマンドラインで Google Cloud リソースにアクセスできます。

  1. Google Cloud コンソールの上部にある「Cloud Shell をアクティブにする」アイコン 「Cloud Shell をアクティブにする」アイコン をクリックします。

接続した時点で認証が完了しており、プロジェクトに各自の PROJECT_ID が設定されます。出力には、このセッションの PROJECT_ID を宣言する次の行が含まれています。

Your Cloud Platform project in this session is set to YOUR_PROJECT_ID

gcloud は Google Cloud のコマンドライン ツールです。このツールは、Cloud Shell にプリインストールされており、タブ補完がサポートされています。

  1. (省略可)次のコマンドを使用すると、有効なアカウント名を一覧表示できます。
gcloud auth list
  1. [承認] をクリックします。

  2. 出力は次のようになります。

出力:

ACTIVE: * ACCOUNT: student-01-xxxxxxxxxxxx@qwiklabs.net To set the active account, run: $ gcloud config set account `ACCOUNT`
  1. (省略可)次のコマンドを使用すると、プロジェクト ID を一覧表示できます。
gcloud config list project

出力:

[core] project = <project_ID>

出力例:

[core] project = qwiklabs-gcp-44776a13dea667a6 注: Google Cloud における gcloud ドキュメントの全文については、gcloud CLI の概要ガイドをご覧ください。

Cloud SQL

Cloud SQL は、Google Cloud 上のリレーショナル データベースの設定、維持、運用、管理を簡単にできるようにするフルマネージド データベース サービスです。MySQL または PostgreSQL で利用できます。

タスク 1. 必要なファイルをダウンロードする

  1. 以下のコマンドを使ってディレクトリを作成し、必要な Terraform スクリプトを Cloud Storage バケットから取得します。
mkdir sql-with-terraform cd sql-with-terraform gsutil cp -r gs://spls/gsp234/gsp234.zip .
  1. ダウンロードしたコンテンツを展開します。
unzip gsp234.zip

タスク 2. コードを理解する

  • main.tf ファイルの内容を確認します。
cat main.tf

出力例:

... resource "google_sql_database_instance" "master" { name = "example-mysql-${random_id.name.hex}" project = var.project region = var.region database_version = var.database_version master_instance_name = var.master_instance_name settings { tier = var.tier activation_policy = var.activation_policy authorized_gae_applications = var.authorized_gae_applications disk_autoresize = var.disk_autoresize dynamic "backup_configuration" { for_each = [var.backup_configuration] content { binary_log_enabled = lookup(backup_configuration.value, "binary_log_enabled", null) enabled = lookup(backup_configuration.value, "enabled", null) start_time = lookup(backup_configuration.value, "start_time", null) } } dynamic "ip_configuration" { for_each = [var.ip_configuration] content { ipv4_enabled = lookup(ip_configuration.value, "ipv4_enabled", true) private_network = lookup(ip_configuration.value, "private_network", null) require_ssl = lookup(ip_configuration.value, "require_ssl", null) dynamic "authorized_networks" { for_each = lookup(ip_configuration.value, "authorized_networks", []) content { expiration_time = lookup(authorized_networks.value, "expiration_time", null) name = lookup(authorized_networks.value, "name", null) value = lookup(authorized_networks.value, "value", null) } } } } ...

次に、このラボに割り当てられたプロジェクト ID とリージョンを使用するように、variables.tf ファイルを更新します。

  1. Cloud Shell で [エディタを開く] をクリックします。
  2. variables.tf を開き、projectregion の変数の値を次のように変更します。
  • project:
  • region:

完了したら変更を保存します。

タスク 3. Terraform を実行する

terraform init コマンドを使用して、Terraform 構成ファイルを含む作業ディレクトリを初期化します。

このコマンドは、いくつかの初期化ステップを実行して、作業ディレクトリを使用できるように準備します。このコマンドは、いつでも何度でも安全に実行できます。実行すると、作業ディレクトリに構成の変更が反映されます。

  1. terraform init を実行します。
terraform init

terraform plan コマンドを使用して実行プランを作成します。このコマンドは省略可能ですが、実行することをおすすめします。このコマンドを実行すると、明示的に無効にしない限り更新が行われ、構成ファイルに指定されている目的の状態を実現するために必要なアクションが特定されます。

これは、一連の変更に対する実行プランが想定どおりに行われるかどうかを、実際のリソースや状態に変更を加えることなく確認するのに便利です。たとえば、変更をバージョン管理に commit する前に terraform plan を実行すると、予想どおりに機能するかどうかを事前に確認できます。

  1. terraform plan を実行します。
terraform plan -out=tfplan

オプションの -out 引数を使用すると、生成されたプランをファイルに保存できます。保存したファイルは、後で terraform apply を使用して実行できます。

terraform apply コマンドを使用して、構成を目的の状態にするために必要な変更を適用します。terraform plan を実行した場合は、実行プランによって生成された一連の定義済みアクションを適用できます。

  1. 作成した Terraform プランを適用します。
terraform apply tfplan

処理が完了するまで、少し時間がかかります。完了すると、次のような出力が表示されます。

Apply complete! Resources: 5 added, 0 changed, 0 destroyed. The state of your infrastructure has been saved to the path below. This state is required to modify and destroy your infrastructure, so keep it safe. To inspect the complete state use the `terraform show` command. State path: terraform.tfstate Outputs: generated_user_password = instance_address = 35.232.204.44 instance_address_time_to_retire = instance_name = example-mysql-6808 self_link = https://www.googleapis.com/sql/v1beta4/projects/[PROJECT_ID]/instances/example-mysql-6808

完了したタスクをテストする

[進行状況を確認] をクリックして、実行したタスクを確認します。

Terraform スクリプトを使用して Cloud SQL インスタンスを作成します。

タスク 4. Cloud SQL Proxy

プロキシの機能

Cloud SQL Proxy を使用すると、IP アドレスの許可リストへの登録や、SSL の構成を行わなくても、Cloud SQL の第 2 世代インスタンスに安全にアクセスできます。

Cloud SQL Proxy を使用して Cloud SQL インスタンスにアクセスする利点は以下のとおりです。

  • 安全な接続: プロキシは、TLS 1.2 と 128 ビット AES 暗号を使用して、データベースとの間で送受信されるトラフィックを自動的に暗号化します。クライアントとサーバーの ID の確認には、SSL 証明書が使用されます。
  • 簡単な接続管理: プロキシが Cloud SQL との認証を処理するので、静的な IP アドレスを提供する必要がなくなります。
注: Cloud SQL に App Engine のスタンダード環境またはフレキシブル環境から接続する場合は、プロキシを使用したり SSL を構成したりする必要はありません。これらの接続では、「組み込み」のプロキシ実装が自動的に使用されます。

Cloud SQL Proxy の仕組み

Cloud SQL Proxy は、プロキシと呼ばれるローカル クライアントをローカル環境で実行することによって機能します。アプリケーションは、データベースで使用されている標準のプロトコルを介してプロキシと通信します。プロキシは、セキュアなトンネルを使用して、サーバー上で実行されているコンパニオン プロセスと通信します。

次の図は、プロキシが Cloud SQL に接続する方法を示しています。

Cloud SQL とクライアント マシンにあるサードパーティのコードと Cloud SQL のコードを含むプロキシ接続図。

タスク 5. Cloud SQL Proxy をインストールする

  1. プロキシをダウンロードします。
wget https://dl.google.com/cloudsql/cloud_sql_proxy.linux.amd64 -O cloud_sql_proxy
  1. プロキシを実行可能にします。
chmod +x cloud_sql_proxy

プロキシは、環境の任意の場所にインストールできます。プロキシ バイナリの場所が、アプリケーションから受信するデータをリッスンする場所に影響することはありません。

プロキシの起動オプション

プロキシを起動するときに、次の情報をプロキシに提供します。

  • 接続先の Cloud SQL インスタンス
  • Cloud SQL へ送信するためにアプリケーションから受信するデータをリッスンする場所
  • Cloud SQL に対するアプリケーションの認証に使用する認証情報を取得できる場所

指定したプロキシ スタートアップ オプションによって、TCP ポートと Unix ソケットのどちらでリッスンするのかが決まります。Unix ソケットでリッスンする場合は、選択した場所(通常は /cloudsql/ ディレクトリ)にソケットが作成されます。TCP の場合、プロキシはデフォルトで localhost でリッスンします。

タスク 6. データベースへの接続をテストする

  1. まず、Cloud SQL インスタンスに対して Cloud SQL Proxy を実行します。
export GOOGLE_PROJECT=$(gcloud config get-value project) MYSQL_DB_NAME=$(terraform output -json | jq -r '.instance_name.value') MYSQL_CONN_NAME="${GOOGLE_PROJECT}:{{{project_0.default_region|REGION}}}:${MYSQL_DB_NAME}"
  1. 次のコマンドを実行します。
./cloud_sql_proxy -instances=${MYSQL_CONN_NAME}=tcp:3306

次に、プラス記号(+)のアイコンをクリックして新しい Cloud Shell タブを開きます。このシェルを使用して Cloud SQL Proxy に接続します。

  1. sql-with-terraform ディレクトリに移動します。
cd ~/sql-with-terraform
  1. 生成された MYSQL のパスワードを取得します。
echo MYSQL_PASSWORD=$(terraform output -json | jq -r '.generated_user_password.value')
  1. MySQL への接続をテストします。
mysql -udefault -p --host 127.0.0.1 default
  1. プロンプトが表示されたら、上の出力で確認した MYSQL_PASSWORD の値を入力し、Enter キーを押します。

  2. MYSQL のコマンドラインにログインできるはずです。Ctrl+D キーを押して MYSQL を終了します。

最初の Cloud Shell タブに戻ると、Cloud SQL Proxy に対する接続のログが表示されています。

タスク 7. 理解度チェック

今回のラボで学習した内容の理解を深めていただくため、以下の選択式問題を用意しました。正解を目指して頑張ってください。

お疲れさまでした

このラボでは、Terraform で Cloud SQL インスタンスを作成し、Cloud SQL Proxy を設定しました。その後、MySQL クライアントを使用して、Cloud SQL インスタンスと MySQL クライアントとの接続をテストしました。

クエストを完了する

このセルフペース ラボは、「Managing Cloud Infrastructure with Terraform」および「Cloud SQL」のクエストの一部です。クエストとは学習プログラムを構成する一連のラボのことで、完了すると成果が認められて上のようなバッジが贈られます。バッジは公開して、オンライン レジュメやソーシャル メディア アカウントにリンクできます。「Managing Cloud Infrastructure with Terraform」または「Cloud SQL」に登録すれば、すぐにクレジットを受け取ることができます。受講可能なすべてのクエストについては、Google Cloud Skills Boost カタログをご覧ください。

次のラボを受講する

Using a NAT Gateway with Kubernetes Engine」に進んで学習を続けるか、以下のおすすめのラボをご確認ください。

次のステップと詳細情報

Terraform を使用して Google Cloud プロジェクトを管理する方法について読む

Google Cloud トレーニングと認定資格

Google Cloud トレーニングと認定資格を通して、Google Cloud 技術を最大限に活用できるようになります。必要な技術スキルとベスト プラクティスについて取り扱うクラスでは、学習を継続的に進めることができます。トレーニングは基礎レベルから上級レベルまであり、オンデマンド、ライブ、バーチャル参加など、多忙なスケジュールにも対応できるオプションが用意されています。認定資格を取得することで、Google Cloud テクノロジーに関するスキルと知識を証明できます。

マニュアルの最終更新日: 2023 年 10 月 26 日

ラボの最終テスト日: 2023 年 10 月 30 日

Copyright 2024 Google LLC All rights reserved. Google および Google のロゴは Google LLC の商標です。その他すべての企業名および商品名はそれぞれ各社の商標または登録商標です。