Google Kubernetes Engine から Cloud SQL for PostgreSQL に接続する
このページでは、Google Cloud コンソールとクライアント アプリケーションを使用して、PostgreSQL インスタンスに接続された Google Kubernetes Engine(GKE)にサンプルアプリをデプロイする方法について説明します。このクイックスタートで作成されるリソースにかかる費用は、クリーンアップを含む手順を適切なタイミングで完了した場合、通常 1 ドル(USD)未満です。
始める前に
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
GKE で Cloud SQL サンプルアプリを実行するために必要な Google Cloud APIs を有効にします。
コンソール
[API を有効にする] をクリックして、このクイックスタートで必要な API を有効にします。
これにより、次の API が有効になります。
- Compute Engine API
- Cloud SQL Admin API
- Google Kubernetes Engine API
- Artifact Registry API
- Cloud Build API
gcloud
次のボタンをクリックして Cloud Shell を開きます。これにより、ブラウザから Google Cloud リソースにコマンドラインで直接アクセスできます。Cloud Shell を使用して、このクイックスタートで紹介する
gcloud
コマンドを実行できます。Cloud Shell を使用して、次のように
gcloud services enable
コマンドを実行し、このクイックスタートに必要な API を有効にします。gcloud services enable compute.googleapis.com sqladmin.googleapis.com \ container.googleapis.com artifactregistry.googleapis.com cloudbuild.googleapis.com
このコマンドにより、次の API が有効になります。
- Compute Engine API
- Cloud SQL Admin API
- GKE API
- Artifact Registry API
- Cloud Build API
Cloud SQL の設定
Cloud SQL インスタンスを作成する
データベースの作成
コンソール
-
Google Cloud コンソールで Cloud SQL の [インスタンス] ページに移動します。
- [
quickstart-instance
] を選択します。 - SQL ナビゲーション メニューから [データベース] を選択します。
- [データベースを作成] をクリックします。
- [新しいデータベース] ダイアログ ボックスの [データベース名] フィールドに「
quickstart-db
」と入力します。 - [作成] をクリックします。
gcloud
gcloud
sql databases create
コマンドを実行してデータベースを作成します。
gcloud sql databases create quickstart-db --instance=quickstart-instance
ユーザーを作成する
コンソール
-
Google Cloud コンソールで Cloud SQL の [インスタンス] ページに移動します。
- インスタンスの [概要] ページを開くには、インスタンス名をクリックします。
- SQL ナビゲーション メニューから [ユーザー] を選択します。
- [ユーザー アカウントを追加] をクリックします。
- [ユーザー アカウントをインスタンス instance_name に追加] ページで、次の情報を追加します。
- ユーザー名:
quickstart-user
に設定します。 - パスワード: データベース ユーザーのパスワードを指定します。このクイックスタートの後半で使用するので、メモしておいてください。
- ユーザー名:
- [追加] をクリックします。
gcloud
次のようにコマンドを実行する前に、DB_PASS をデータベース ユーザーのパスワードに置き換えます。このクイックスタートの後半で使用するので、メモしておいてください。
gcloud sql users create
コマンドを実行してリソースを作成します。
gcloud sql users create quickstart-user \ --instance=quickstart-instance \ --password=DB_PASS
ユーザー名の長さの上限は、オンプレミス PostgreSQL の場合と同じです。
GKE クラスタを作成する
コンソール
-
Google Cloud コンソールで、Google Kubernetes Engine のページに移動します。
- [作成] をクリックします。
- GKE Autopilot の [構成] をクリックします。
- [名前] で、クラスタ名を
gke-cloud-sql-quickstart
と指定します。 - [作成] をクリックします。
gcloud
gcloud container clusters create-auto
コマンドを実行して、汲田スタを作成します。
gcloud container clusters create-auto gke-cloud-sql-quickstart \ --region us-central1
Cloud Shell エディタで Cloud SQL サンプルアプリのクローンを作成する
Cloud SQL インスタンス、データベース、GKE クラスタを使用して、Cloud SQL インスタンスに接続するサンプル アプリケーションのクローンを作成し、構成できるようになりました。このクイックスタートの残りの手順では、gcloud
と kubectl
コマンドライン ツールを使用します。どちらのツールも Cloud Shell にプリインストールされています。
Go
-
Cloud Shell エディタで、サンプルアプリのソースコードを開きます。
Cloud Shell エディタを開く -
Open in Cloud Shell
ダイアログで、[確認] をクリックしてサンプルアプリのコードをダウンロードし、Cloud Shell エディタでサンプルアプリ ディレクトリを開きます。
Java
-
Cloud Shell エディタで、サンプルアプリのソースコードを開きます。
Cloud Shell エディタを開く -
Open in Cloud Shell
ダイアログで、[確認] をクリックしてサンプルアプリのコードをダウンロードし、Cloud Shell エディタでサンプルアプリ ディレクトリを開きます。
Node.js
-
Cloud Shell エディタで、サンプルアプリのソースコードを開きます。
Cloud Shell エディタを開く -
Open in Cloud Shell
ダイアログで、[確認] をクリックしてサンプルアプリのコードをダウンロードし、Cloud Shell エディタでサンプルアプリ ディレクトリを開きます。
Python
-
Cloud Shell エディタで、サンプルアプリのソースコードを開きます。
Cloud Shell エディタを開く -
Open in Cloud Shell
ダイアログで、[確認] をクリックしてサンプルアプリのコードをダウンロードし、Cloud Shell エディタでサンプルアプリ ディレクトリを開きます。
GKE クラスタを有効にする
作成した GKE クラスタをデフォルト クラスタとして有効にし、このクイックスタートの以降のコマンドで使用します。
gcloud container clusters get-credentials
コマンドを実行して、GKE クラスタを有効にします。
gcloud container clusters get-credentials gke-cloud-sql-quickstart \ --region us-central1
サービス アカウントの設定
-
次のように
gcloud iam service-accounts create
コマンドを実行して、新しいサービス アカウントを作成します。gcloud iam service-accounts create gke-quickstart-service-account \ --display-name="GKE Quickstart Service Account"
- 次のように
gcloud projects add-iam-policy-binding
コマンドを実行して、作成した Google Cloud サービス アカウントに Cloud SQL クライアント ロールを追加します。YOUR_PROJECT_ID は、プロジェクト ID で置き換えます。gcloud projects add-iam-policy-binding YOUR_PROJECT_ID \ --member="serviceAccount:gke-quickstart-service-account@YOUR_PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/cloudsql.client"
- サンプルアプリではロギングを使用するので、次のように
gcloud projects add-iam-policy-binding
コマンドを実行して、先ほど作成した Google Cloud サービス アカウントにログ書き込みのロールを追加します。YOUR_PROJECT_ID は、プロジェクト ID で置き換えます。gcloud projects add-iam-policy-binding YOUR_PROJECT_ID \ --member="serviceAccount:gke-quickstart-service-account@YOUR_PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/logging.logWriter"
- サービス アカウントが Artifactory リポジトリからイメージを pull できるようにする必要があります。
そのため、gcloud projects add-iam-policy-binding
コマンドを実行して、サービス アカウントに Artifact Registry 読み取りロールを追加します。YOUR_PROJECT_ID は、プロジェクト ID で置き換えます。gcloud projects add-iam-policy-binding YOUR_PROJECT_ID \ --member="serviceAccount:gke-quickstart-service-account@YOUR_PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/artifactregistry.reader"
- Kubernetes サービス アカウントを作成します。
- Cloud Shell エディタで
service-account.yaml
ファイルを更新します。<YOUR-KSA-NAME>
をksa-cloud-sql
に置き換えます。 - Cloud Shell で次のように
kubectl apply
コマンドを実行します。kubectl apply -f service-account.yaml
- Cloud Shell エディタで
- 以下の
gcloud iam service-accounts add-iam-policy-binding
コマンドを実行して、Google Cloud サービス アカウントと Kubernetes サービス アカウントの IAM バインディングを有効にします。次のように置き換えます。- YOUR_PROJECT_ID: プロジェクト ID。
- YOUR_K8S_NAMESPACE:
default
。これは、GKE で作成されたクラスタのデフォルトの名前空間です。 - YOUR_KSA_NAME:
ksa-cloud-sql
。
gcloud iam service-accounts add-iam-policy-binding \ --role="roles/iam.workloadIdentityUser" \ --member="serviceAccount:YOUR_PROJECT_ID.svc.id.goog[YOUR_K8S_NAMESPACE/YOUR_KSA_NAME]" \ gke-quickstart-service-account@YOUR_PROJECT_ID.iam.gserviceaccount.com
- 次のように
kubectl annotate
コマンドを実行して、Kubernetes サービス アカウントに IAM バインディングのアノテーションを付けます。次のように置き換えます。- YOUR_KSA_NAME:
ksa-cloud-sql
。 - YOUR_PROJECT_ID: プロジェクト ID。
kubectl annotate serviceaccount \ YOUR_KSA_NAME \ iam.gke.io/gcp-service-account=gke-quickstart-service-account@YOUR_PROJECT_ID.iam.gserviceaccount.com
- YOUR_KSA_NAME:
シークレットを構成する
次のように kubectl create secret generic
コマンドを実行して、サンプルアプリで使用するデータベース、ユーザー、ユーザー パスワードの Kubernetes Secret を作成します。各 Secret の値は、このクイックスタートの前の手順で指定した値に基づいています。DB_PASS は、前のユーザーの作成クイックスタート ステップで作成した quickstart-user
のパスワードに置き換えます。
kubectl create secret generic gke-cloud-sql-secrets \ --from-literal=database=quickstart-db \ --from-literal=username=quickstart-user \ --from-literal=password=DB_PASS
サンプルアプリの作成
Go
-
Cloud Shell で次の
gcloud artifacts repositories create
コマンドを実行して、クラスタと同じリージョンに gke-cloud-sql-repo という名前の Artifact Registry にリポジトリを作成します。YOUR_PROJECT_ID は、プロジェクト ID で置き換えます。gcloud artifacts repositories create gke-cloud-sql-repo \ --project=YOUR_PROJECT_ID \ --repository-format=docker \ --location=us-central1 \ --description="GKE Quickstart sample app"
-
Cloud Shell で次のように
gcloud builds submit
コマンドを実行して、Docker コンテナをビルドし、Artifact Registry に公開します。 YOUR_PROJECT_ID は、プロジェクト ID で置き換えます。gcloud builds submit \ --tag us-central1-docker.pkg.dev/YOUR_PROJECT_ID/gke-cloud-sql-repo/gke-sql .
Java
-
Cloud Shell で次の
gcloud artifacts repositories create
コマンドを実行して、クラスタと同じリージョンに gke-cloud-sql-repo という名前の Artifact Registry にリポジトリを作成します。YOUR_PROJECT_ID は、プロジェクト ID で置き換えます。gcloud artifacts repositories create gke-cloud-sql-repo \ --project=YOUR_PROJECT_ID \ --repository-format=docker \ --location=us-central1 \ --description="GKE Quickstart sample app"
-
Cloud Shell で次のように
mvn
コマンドを実行して、Docker コンテナをビルドし、Artifact Registry に公開します。 YOUR_PROJECT_ID は、プロジェクト ID で置き換えます。mvn clean package com.google.cloud.tools:jib-maven-plugin:2.8.0:build \ -Dimage=us-central1-docker.pkg.dev/YOUR_PROJECT_ID/gke-cloud-sql-repo/gke-sql \ -DskipTests -Djib.to.credHelper=gcloud
Node.js
-
Cloud Shell で次の
gcloud artifacts repositories create
コマンドを実行して、クラスタと同じリージョンに gke-cloud-sql-repo という名前の Artifact Registry にリポジトリを作成します。YOUR_PROJECT_ID は、プロジェクト ID で置き換えます。gcloud artifacts repositories create gke-cloud-sql-repo \ --project=YOUR_PROJECT_ID \ --repository-format=docker \ --location=us-central1 \ --description="GKE Quickstart sample app"
-
Cloud Shell で次のように
gcloud builds submit
コマンドを実行して、Docker コンテナをビルドし、Artifact Registry に公開します。 YOUR_PROJECT_ID は、プロジェクト ID で置き換えます。gcloud builds submit \ --tag us-central1-docker.pkg.dev/YOUR_PROJECT_ID/gke-cloud-sql-repo/gke-sql .
Python
-
Cloud Shell で次の
gcloud artifacts repositories create
コマンドを実行して、クラスタと同じリージョンに gke-cloud-sql-repo という名前の Artifact Registry にリポジトリを作成します。YOUR_PROJECT_ID は、プロジェクト ID で置き換えます。gcloud artifacts repositories create gke-cloud-sql-repo \ --project=YOUR_PROJECT_ID \ --repository-format=docker \ --location=us-central1 \ --description="GKE Quickstart sample app"
-
Cloud Shell で次のように
gcloud builds submit
コマンドを実行して、Docker コンテナをビルドし、Artifact Registry に公開します。 YOUR_PROJECT_ID は、プロジェクト ID で置き換えます。gcloud builds submit \ --tag us-central1-docker.pkg.dev/YOUR_PROJECT_ID/gke-cloud-sql-repo/gke-sql .
サンプルアプリをデプロイする
クリーンアップ
このページで使用したリソースについて、Google Cloud アカウントに課金されないようにするには、次の操作を行います。
-
Google Cloud コンソールで Cloud SQL の [インスタンス] ページに移動します。
quickstart-instance
インスタンスを選択して [インスタンスの詳細] ページを開きます。- ページ上部にあるアイコンバーで、[削除] をクリックします。
- [インスタンスの削除] ダイアログ ボックスで「
quickstart-instance
」と入力し、[削除] をクリックしてインスタンスを削除します。 -
Google Cloud コンソールで、Google Kubernetes Engine のページに移動します。
gke-cloud-sql-quickstart
サービス名の横にあるチェックボックスをオンにします。- Google Kubernetes Engine ページの上部にある [削除] ボタンをクリックします。
省略可能なクリーンアップ手順
このクイックスタート用に作成した Google Cloud サービス アカウントを使用しない場合は、このアカウントを削除できます。
-
Google Cloud コンソールの [IAM] ページに移動します。
gke-quickstart-service-account
という名前の IAM アカウントのチェックボックスをオンにします。- [削除] をクリックして、削除を確定します。
このクイックスタートで有効にした API を使用しない場合は、無効にすることができます。
- このクイックスタートで有効にした API:
- Compute Engine API
- Cloud SQL Admin API
- Google Kubernetes Engine API
- Artifact Registry API
- Cloud Build API
Google Cloud コンソールの [API] ページに移動します。
無効にする API を選択し、[API を無効にする] ボタンをクリックします。
次のステップ
必要に応じて、Cloud SQL インスタンスの作成で詳細をご確認ください。Cloud SQL インスタンスの PostgreSQL ユーザーとデータベースの作成についても学習できます。
Cloud SQL の料金情報もご覧ください。
以下の詳細を確認する
- Cloud SQL のすべての接続オプション。
- パブリック IP アドレスを持つ Cloud SQL インスタンスの構成。
- プライベート IP アドレスを持つ Cloud SQL インスタンスの構成。
また、他の Google Cloud アプリケーションから Cloud SQL インスタンスへの接続についても確認できます。