ラボの設定手順と要件
アカウントと進行状況を保護します。このラボを実行するには、常にシークレット ブラウジング ウィンドウとラボの認証情報を使用してください。

アプリを Cloud SQL for PostgreSQL インスタンスに接続する

ラボ 35分 universal_currency_alt クレジット: 1 show_chart 入門
info このラボでは、学習をサポートする AI ツールが組み込まれている場合があります。
このコンテンツはまだモバイル デバイス向けに最適化されていません。
快適にご利用いただくには、メールで送信されたリンクを使用して、デスクトップ パソコンでアクセスしてください。

GSP919

Google Cloud セルフペース ラボのロゴ

概要

Cloud SQL は、MySQL、PostgreSQL、Microsoft SQL Server 対応のフルマネージド リレーショナル データベース サービスであり、バックアップ、レプリケーション、ロギングなどの一般的な管理タスクを対象とした多数のサービスを提供しています。これらの便利なサービスを活用するために、アプリケーションを簡単に Cloud SQL インスタンスに接続できます。

このラボでは、まず Kubernetes クラスタを作成し、そのクラスタにシンプルなアプリケーションをデプロイします。次に、指定された Cloud SQL for PostgreSQL インスタンスにそのアプリケーションを接続し、アプリケーションがデータの読み取り、書き込みを行えることを確認します。

演習内容

  • Kubernetes クラスタを作成し、そのクラスタにシンプルなアプリケーションをデプロイする。
  • 指定された Cloud SQL for PostgreSQL データベース インスタンスにアプリケーションを接続する。
  • アプリケーションでデータベースに対する書き込みと読み取りを行えることを確認する。

設定と要件

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

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

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

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

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

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

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

    • [Google Cloud コンソールを開く] ボタン
    • 残り時間
    • このラボで使用する必要がある一時的な認証情報
    • このラボを行うために必要なその他の情報(ある場合)
  2. [Google Cloud コンソールを開く] をクリックします(Chrome ブラウザを使用している場合は、右クリックして [シークレット ウィンドウで開く] を選択します)。

    ラボでリソースがスピンアップし、別のタブで [ログイン] ページが表示されます。

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

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

    {{{user_0.username | "Username"}}}

    [ラボの詳細] ペインでもユーザー名を確認できます。

  4. [次へ] をクリックします。

  5. 以下のパスワードをコピーして、[ようこそ] ダイアログに貼り付けます。

    {{{user_0.password | "Password"}}}

    [ラボの詳細] ペインでもパスワードを確認できます。

  6. [次へ] をクリックします。

    重要: ラボで提供された認証情報を使用する必要があります。Google Cloud アカウントの認証情報は使用しないでください。 注: このラボでご自身の Google Cloud アカウントを使用すると、追加料金が発生する場合があります。
  7. その後次のように進みます。

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

その後、このタブで Google Cloud コンソールが開きます。

注: Google Cloud のプロダクトやサービスにアクセスするには、ナビゲーション メニューをクリックするか、[検索] フィールドにサービス名またはプロダクト名を入力します。 ナビゲーション メニュー アイコンと検索フィールド

Cloud Shell をアクティブにする

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

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

  2. ウィンドウで次の操作を行います。

    • Cloud Shell 情報ウィンドウで操作を進めます。
    • Cloud Shell が認証情報を使用して Google Cloud API を呼び出すことを承認します。

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

Your Cloud Platform project in this session is set to {{{project_0.project_id | "PROJECT_ID"}}}

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

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

出力:

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

出力:

[core] project = {{{project_0.project_id | "PROJECT_ID"}}} 注: Google Cloud における gcloud ドキュメントの全文については、gcloud CLI の概要ガイドをご覧ください。

リージョンとゾーンを設定する

一部の Compute Engine リソースは、リージョン内やゾーン内に存在します。リージョンとは、リソースを実行できる特定の地理的なロケーションです。1 つのリージョンには 1 つ以上のゾーンがあります。

Cloud Shell で次の gcloud コマンドを実行して、ラボのデフォルトのリージョンとゾーンを設定します。

gcloud config set compute/zone "{{{project_0.default_zone|ZONE}}}" export ZONE=$(gcloud config get compute/zone) gcloud config set compute/region "{{{project_0.default_region|REGION}}}" export REGION=$(gcloud config get compute/region)

タスク 1. API を初期化して Cloud IAM サービス アカウントを作成する

このタスクを完了するには、いくつかの API を初期化し、アプリケーションが Cloud SQL データベースに接続するために使用する IAM サービス アカウントを作成する必要があります。

API を有効にする

このラボで必要な API を有効にする必要があります。後のタスクでコンテナをビルドして Artifact Registry に push するため、まず Artifact Registry API を有効にする必要があります。

  1. Artifact Registry API を有効にするには、Cloud Shell で次のコマンドを実行します。
gcloud services enable artifactregistry.googleapis.com

Cloud SQL 用のサービス アカウントを作成する

後でデプロイするアプリケーション用の IAM サービス アカウント認証情報を構成する必要があります。このサービス アカウントは、Cloud SQL データベースの作成とアクセスを可能にするロールにバインドされている必要があります。

  1. Cloud Shell で、サービス アカウントを作成して、ラボ プロジェクトの Cloud SQL 管理者ロールにバインドします。
export PROJECT_ID=$(gcloud config list --format 'value(core.project)') export CLOUDSQL_SERVICE_ACCOUNT=cloudsql-service-account gcloud iam service-accounts create $CLOUDSQL_SERVICE_ACCOUNT --project=$PROJECT_ID gcloud projects add-iam-policy-binding $PROJECT_ID \ --member="serviceAccount:$CLOUDSQL_SERVICE_ACCOUNT@$PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/cloudsql.admin"
  1. Cloud Shell で、鍵を作成してローカル ファイルにエクスポートします。
gcloud iam service-accounts keys create $CLOUDSQL_SERVICE_ACCOUNT.json \ --iam-account=$CLOUDSQL_SERVICE_ACCOUNT@$PROJECT_ID.iam.gserviceaccount.com \ --project=$PROJECT_ID

ファイルは Cloud Shell のホームフォルダに保存されます。

[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。Cloud SQL 用の IAM サービス アカウントを作成する

タスク 2. 軽量の GKE アプリケーションをデプロイする

このタスクでは、Kubernetes クラスタを作成し、そのクラスタに軽量の Google Kubernetes Engine(GKE)アプリケーションをデプロイします。このアプリケーションを構成して、指定された Cloud SQL インスタンスにアクセスできるようにします。

ラボで用意されているアプリケーションは、gMemegen という名前のシンプルな Flask-SQLAlchemy ウェブ アプリケーションです。このアプリケーションはミームを作成するために、一連の写真を指定してヘッダーとフッターのテキストをキャプチャし、それらのテキストをデータベースに保存して、ミームをローカル フォルダにレンダリングします。このアプリケーションは、2 つのコンテナ(アプリケーション用とサイドカー パターンでデプロイされた Cloud SQL Auth Proxy 用)を含む単一の Pod で実行されます。

アプリとデータベース間のサイドカーを介したリクエストは、ロードバランサによってマーシャリングされます。ユーザーはブラウザで、このロードバランサが公開する外部 Ingress の IP アドレスを使用してアプリにアクセスします。

Kubernetes クラスタを作成する

このステップでは、最小限の Kubernetes クラスタを作成します。クラスタがデプロイされるまでには数分かかります。

  1. Cloud Shell で次のコマンドを使用して、最小限の Kubernetes クラスタを作成します。
ZONE={{{project_0.default_zone|ZONE}}} gcloud container clusters create postgres-cluster \ --zone=$ZONE --num-nodes=2

データベースにアクセスするための Kubernetes Secret を作成する

このステップでは、Cloud SQL インスタンスとデータベースに接続するために必要な認証情報を含む Kubernetes Secret のペアを作成します。

  1. Cloud Shell で、次のコマンドを実行して Secret を作成します。
kubectl create secret generic cloudsql-instance-credentials \ --from-file=credentials.json=$CLOUDSQL_SERVICE_ACCOUNT.json kubectl create secret generic cloudsql-db-credentials \ --from-literal=username=postgres \ --from-literal=password=supersecret! \ --from-literal=dbname=gmemegen_db

GKE アプリケーション コンテナをダウンロードしてビルドする

gMemegen アプリケーションを GKE クラスタにデプロイする前に、コンテナをビルドしてリポジトリに push する必要があります。

  1. Cloud Shell で、用意されているアプリケーション コードをダウンロードし、アプリケーション ディレクトリに移動します。
gsutil -m cp -r gs://spls/gsp919/gmemegen . cd gmemegen
  1. リージョン、プロジェクト ID、Artifact Registry リポジトリの環境変数を作成します。
export REGION={{{ project_0.default_region | "REGION" }}} export PROJECT_ID=$(gcloud config list --format 'value(core.project)') export REPO=gmemegen
  1. Artifact Registry の Docker 認証を構成します。
gcloud auth configure-docker ${REGION}-docker.pkg.dev
  • 確認を求めるメッセージが表示されたら、「Y」と入力します。
  1. Artifact Registry リポジトリを作成します。
gcloud artifacts repositories create $REPO \ --repository-format=docker --location=$REGION
  1. ローカル Docker イメージをビルドします。
docker build -t ${REGION}-docker.pkg.dev/${PROJECT_ID}/gmemegen/gmemegen-app:v1 .

このラボでは、'root' ユーザーとして 'pip' を実行することに関する警告は無視してかまいません。ただし、ローカルマシンで作業する場合をはじめ、一般的には仮想環境を使用することがベスト プラクティスです。

  1. イメージを Artifact Registry に push します。
docker push ${REGION}-docker.pkg.dev/${PROJECT_ID}/gmemegen/gmemegen-app:v1

GKE アプリケーションを構成してデプロイする

gMemegen アプリケーションが正しいコンテナを指すように Kubernetes Deployment マニフェストを変更し、Cloud SQL PostgreSQL インスタンスの接続文字列を使用して Cloud SQL Auth Proxy サイドカーを構成する必要があります。

この手順では Cloud Shell エディタを使用してファイルを編集する方法を説明していますが、必要に応じて、Cloud Shell から vinano などの別のエディタを使用することもできます。

  1. Cloud Shell のメニューバーで、[エディタを開く] をクリックして Cloud Shell エディタを開きます。

  2. 左側の [エクスプローラ] パネルに移動して gmemegen フォルダを開き、gmemegen_deployment.yaml を選択して、このファイルを編集します。

  3. 33 行目image 属性で、${REGION} に、${PROJECT_ID} に置き換えます。編集後の行は次のようになります。

image: {{{ project_0.default_region | "REGION" }}}-docker.pkg.dev/{{{ project_0.project_id | "Project ID" }}}/gmemegen/gmemegen-app:v1
  1. 60 行目で、${REGION} に、${PROJECT_ID} に置き換えます。編集後の行は次のようになります。
-instances={{{ project_0.project_id | "Project ID" }}}:{{{ project_0.default_region | "REGION" }}}:postgres-gmemegen=tcp:5432

接続名が正しいことを確認するには、Cloud コンソールで [データベース] > [SQL] に移動し、postgres-gmemegen インスタンスを選択して、[概要] ペインの [接続名] に表示されている名前と比較します。有効な接続名の形式は PROJECT_ID:REGION:CLOUD_SQL_INSTANCE_ID です。

  1. Cloud Shell エディタのメニューから [File] > [Save] を選択して、変更を保存します。

  2. Cloud コンソールで [ターミナルを開く] をクリックして、Cloud Shell を再度開きます。上部の Cloud コンソール ウィンドウが表示されるよう、メニューバーの中央上部にあるハンドルを下にドラッグしてターミナル ウィンドウのサイズを変更しなければならない場合があります。

  3. Cloud Shell で次のコマンドを実行して、アプリケーションをデプロイします。

kubectl create -f gmemegen_deployment.yaml
  1. Cloud Shell で次のコマンドを実行して、デプロイが成功したことを確認します。
kubectl get pods

Pod の起動には数分かかることがあります。これは、Pod がリポジトリからイメージを pull する必要があるためです。ステータスが Running になっている 2 つのコンテナを含む Pod が表示されるまで、上記のコマンドを繰り返します。

[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。軽量の GKE アプリケーションをデプロイする

タスク 3. GKE アプリケーションを外部ロードバランサに接続する

このタスクでは、GKE Pod 内のコンテナ間でのリクエストをマーシャリングするロードバランサを作成し、ブラウザで外部 IP アドレスを使用してアプリケーションにアクセスします。

ロードバランサを作成して、ウェブから GKE アプリケーションにアクセスできるようにする

このステップでは、アプリケーションにパブリック IP アドレスを提供する Kubernetes ロードバランサ Service を作成します。

  1. Cloud Shell で次のコマンドを実行して、アプリケーションのロードバランサを作成します。
kubectl expose deployment gmemegen \ --type "LoadBalancer" \ --port 80 --target-port 8080

アプリケーションをテストしてデータを生成する

このステップでは、ウェブブラウザから gMemegen アプリケーションにアクセスします。

このアプリケーションのインターフェースは、ごくシンプルなものです。アプリを起動すると表示されるホームページには、ミームを作成するための画像候補が 6 つ提示されます。画像をクリックすると、その画像が選択されます。

[Create Meme] ページが表示されます。このページで、画像の上部と下部に表示する 2 つのテキストを入力します。[Submit] をクリックすると、ミームがレンダリングされて表示されます。インターフェースには、生成されたミームのページからホームページに戻るためのナビゲーションが提供されていません。ホームページに戻るには、ブラウザの [戻る] ボタンを使用する必要があります。

[Recent] ページと [Random] ページには、最近生成された一連のミーム、ランダムなミームがそれぞれ表示されます。ミームを生成して UI を操作すると、データベース アクティビティが生成されます。このアクティビティは、下の説明のようにログで確認できます。

ロードバランサが外部 IP を公開するまで待ちます。公開された外部 IP を取得する方法は次のとおりです。

  1. Cloud Shell で次のコマンドを実行し、その出力から LoadBalancer Ingress の外部 IP アドレス属性をコピーします。
kubectl describe service gmemegen

出力:

Name: gmemegen Namespace: default Labels: app=gmemegen Annotations: Selector: app=gmemegen Type: LoadBalancer IP Families: IP: 10.3.240.201 IPs: 10.3.240.201 LoadBalancer Ingress: 34.67.122.203 Port: 80/TCP TargetPort: 8080/TCP NodePort: 31837/TCP Endpoints: 10.0.0.7:8080 Session Affinity: None External Traffic Policy: Cluster Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal EnsuringLoadBalancer 85s service-controller Ensuring load balancer Normal EnsuredLoadBalancer 36s service-controller Ensured load balancer

LoadBalancer Ingress 属性が出力に含まれるまで(上記を参照)1 分ほどかかるため、この属性が表示されるまでコマンドを繰り返してから、次のステップに進みます。

  1. ブラウザで、ロードバランサの Ingress IP アドレスに移動します。

ロードバランサの外部 IP アドレスへのクリック可能なリンクを作成するには、Cloud Shell で次のコマンドを使用します。

export LOAD_BALANCER_IP=$(kubectl get svc gmemegen \ -o=jsonpath='{.status.loadBalancer.ingress[0].ip}' -n default) echo gMemegen Load Balancer Ingress IP: http://$LOAD_BALANCER_IP
  1. Cloud Shell でそのリンクをクリックすると、ブラウザの新しいタブで gMemegen アプリケーションが実行されます。

  2. ミームを作成する方法は次のとおりです。

    • [Home] ページで、表示されている画像のいずれかをクリックします。
    • [Top] と [Bottom] のテキスト ボックスにテキストを入力します。
    • [Submit] ボタンをクリックします。

新しく作成されたミームが表示されます。

Cloud SQL に接続された GKE アプリのミーム。

  1. さらにミームを作成するには、ブラウザの [戻る] ボタンを使用してホームページに移動します。

  2. 既存のミームを表示するには、アプリのメニューで [Recent] または [Random] をクリックします([Random] をクリックすると、新しいブラウザタブが開きます)。

  3. Cloud Shell で次のコマンドを実行して、アプリケーションのアクティビティを表示します。

POD_NAME=$(kubectl get pods --output=json | jq -r ".items[0].metadata.name") kubectl logs $POD_NAME gmemegen | grep "INFO"

これにより、gmemegen コンテナのログに対するクエリが実行され、Pod 上のアプリケーションのアクティビティが表示されます。ここに、実行時に stderr に記録された SQL ステートメントも示されます。

[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。GKE アプリケーションを外部ロードバランサに接続する

タスク 4. アプリケーションのデータベースに対する完全な読み取り / 書き込み機能を確認する

このタスクでは、アプリケーションがデータベースに対して書き込みと読み取りを行えることを確認します。

データベースに接続してアプリケーション テーブルに対するクエリを実行する

このステップでは、Cloud Shell で PL/SQL を実行して Cloud SQL インスタンスに接続します。

  1. Google Cloud コンソールで、[データベース] > [SQL] に移動し、postgres-gmemegen インスタンスを選択します。

  2. [概要] ペインで、[このインスタンスと接続] まで下にスクロールし、[Cloud Shell を開く] ボタンをクリックします。

  3. Cloud Shell で自動入力されたコマンドを実行します。

  4. パスワードの入力を求められたら、「supersecret!」と入力します。

  5. postgres=> プロンプトで、次のコマンドを入力して gmemegen_db データベースを選択します。

\c gmemegen_db
  1. パスワードの入力を求められたら、「supersecret!」と入力します。

  2. gmemegen_db=> プロンプトで、次のコマンドを入力します。

select * from meme;

行ごとに、gMemegen アプリによって生成された各ミームが表示されます。

[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。アプリケーションのデータベースに対する完全な読み取り / 書き込み機能を確認する

お疲れさまでした

このラボでは、Cloud SQL for PostgreSQL データベースにアクセスするようにアプリケーションを構成しました。Kubernetes クラスタを作成し、そのクラスタにシンプルなミーム生成アプリケーションをデプロイしました。また、指定された Cloud SQL for PostgreSQL データベース インスタンスにアプリケーションを接続し、アプリケーションがデータの読み取り、書き込みを行えることを確認しました。

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

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

マニュアルの最終更新日: 2025 年 2 月 28 日

ラボの最終テスト日: 2025 年 2 月 24 日

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

始める前に

  1. ラボでは、Google Cloud プロジェクトとリソースを一定の時間利用します
  2. ラボには時間制限があり、一時停止機能はありません。ラボを終了した場合は、最初からやり直す必要があります。
  3. 画面左上の [ラボを開始] をクリックして開始します

シークレット ブラウジングを使用する

  1. ラボで使用するユーザー名パスワードをコピーします
  2. プライベート モードで [コンソールを開く] をクリックします

コンソールにログインする

    ラボの認証情報を使用して
  1. ログインします。他の認証情報を使用すると、エラーが発生したり、料金が発生したりする可能性があります。
  2. 利用規約に同意し、再設定用のリソースページをスキップします
  3. ラボを終了する場合や最初からやり直す場合を除き、[ラボを終了] はクリックしないでください。クリックすると、作業内容がクリアされ、プロジェクトが削除されます

このコンテンツは現在ご利用いただけません

利用可能になりましたら、メールでお知らせいたします

ありがとうございます。

利用可能になりましたら、メールでご連絡いたします

1 回に 1 つのラボ

既存のラボをすべて終了して、このラボを開始することを確認してください

シークレット ブラウジングを使用してラボを実行する

このラボを実行するには、シークレット モードまたはシークレット ブラウジング ウィンドウを使用することをおすすめします。これにより、個人アカウントと受講者アカウントの競合を防ぎ、個人アカウントに追加料金が発生することを防ぎます。