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.
-
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
次のボタンをクリックして 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 インスタンスを作成する
パブリック IP
パブリック IP アドレスを持つインスタンスを作成する
-
Google Cloud コンソールで Cloud SQL の [インスタンス] ページに移動します。
- [インスタンスを作成] をクリックします。
- [PostgreSQL] をクリックします。
- [インスタンス ID] に「
quickstart-instance
」と入力します。 - postgres ユーザーのパスワードを入力します。このパスワードはこの後で使用できるように保存してください。
- [リージョンとゾーンの可用性の選択] で [シングルゾーン] オプションをクリックします。
- [構成を表示] セクションをクリックして開きます。
- [マシンタイプ] プルダウン メニューで、[軽量] を選択します。
[インスタンスを作成] をクリックし、インスタンスが初期化されて起動されるまで待ちます。
パブリック IP アドレスを持つインスタンスを作成する
gcloud
sql instances create
コマンドを実行する前に、DB_ROOT_PASSWORD をデータベース ユーザーのパスワードに置き換えます。
必要に応じて、次のパラメータの値を変更します。
- --database_version: データベース エンジンのタイプとバージョン。指定しない場合は、API のデフォルトが使用されます。現在利用可能なバージョンを確認するには、gcloud database versions ドキュメントをご覧ください。
- --cpu: マシンに必要なコア数。
- --memory: マシンに必要なメモリ量を示す整数。サイズ単位を指定する必要があります(例: 3,072 MB、9 GB)。単位を指定しない場合、GB が使用されます。
- --region: インスタンスのリージョンのロケーション(例: asia-east1、us-east1)。指定しない場合は、デフォルトで
us-central
が使用されます。リージョンの一覧をご覧ください。
gcloud
sql instances create
コマンドを実行して、Cloud SQL インスタンスを作成します。
gcloud sql instances createquickstart-instance \ --database-version=POSTGRES_13 \ --cpu=1 \ --memory=4GB \ --region=us-central \ --root-password=DB_ROOT_PASSWORD
プライベート IP
プライベート IP アドレスと SSL を有効にしてインスタンスを作成する
-
Google Cloud コンソールで Cloud SQL の [インスタンス] ページに移動します。
- [インスタンスを作成] をクリックします。
- [PostgreSQL] をクリックします。
- [インスタンス ID] に「
quickstart-instance
」と入力します。 - postgres ユーザーのパスワードを入力します。このパスワードはこの後で使用できるように保存してください。
- [リージョンとゾーンの可用性の選択] で [シングルゾーン] オプションをクリックします。
- [構成オプションを表示] をクリックして開きます。
- [マシンタイプ] で [軽量] を選択します。
- [接続] で、[プライベート IP] を選択します。
- [ネットワーク] プルダウン メニューから [デフォルト] を選択します。
- [プライベート サービス アクセス接続は必須です] というダイアログが表示された場合は、[接続の設定] ボタンをクリックします。
- [Service Networking API を有効化] ダイアログで、[API を有効にする] ボタンをクリックします。
- [IP 範囲を割り振る] ダイアログで、[自動的に割り当てられた IP 範囲を使用する] を選択し、[続行] をクリックします。
- [接続の作成] ダイアログで [接続の作成] をクリックします。
- プライベート IP のみを使用するインスタンスを作成するには、[パブリック IP] チェックボックスをオフにします。
- [インスタンスを作成] をクリックし、インスタンスが初期化されて起動するまで待ちます。
- [接続] をクリックします。
- [セキュリティ] で [SSL 接続のみ許可] を選択し、SSL 接続を有効にします。
- [SSL 接続のみ許可] ダイアログで [保存] をクリックし、インスタンスが再起動するのを待ちます。
プライベート IP アドレスと SSL を有効にしてインスタンスを作成する
プライベート IP アドレスを使用してインスタンスを作成する場合は、GKE などの他の Google Cloud サービスからの接続を有効にするようにプライベート サービス アクセスを構成する必要があります。
gcloud compute addresses create
コマンドを実行して、プライベート サービス アクセス接続の IP 範囲を割り振ります。gcloud services vpc-peerings connect
コマンドを実行して、プライベート サービス アクセス接続を作成します。-
gcloud sql instances create
コマンドを実行して次のようにインスタンスを作成する前に、DB_ROOT_PASSWORD をデータベース ユーザーのパスワードに置き換えます。 - --database_version: データベース エンジンのタイプとバージョン。指定しない場合は、API のデフォルトが使用されます。現在利用可能なバージョンのリストについては、gcloud database versions をご覧ください。
- --cpu: マシン内のコア数。
- --memory: マシンに搭載するメモリ量を示す整数。サイズの単位を指定できます(例: 3,072 MB、9 GB)。単位を指定しない場合、GB が使用されます。
- --region: インスタンスのリージョンのロケーション(例: asia-east1、us-east1)。指定しない場合は、デフォルトで
us-central1
が使用されます。リージョンの一覧をご覧ください。 gcloud sql instances patch
コマンドを実行して、インスタンスの SSL 接続のみを許可します。
gcloud compute addresses create google-managed-services-default \ --global \ --purpose=VPC_PEERING \ --prefix-length=16 \ --description="peering range for Google" \ --network=default
gcloud services vpc-peerings connect \ --service=servicenetworking.googleapis.com \ --ranges=google-managed-services-default \ --network=default
必要に応じて、次のパラメータの値を変更します。
gcloud
sql instances create
コマンドを実行して、プライベート IP アドレスを持つ Cloud SQL インスタンスを作成します。
gcloud beta sql instances createquickstart-instance \ --database-version=POSTGRES_13 \ --cpu=1 \ --memory=4GB \ --region=us-central \ --root-password=DB_ROOT_PASSWORD \ --no-assign-ip \ --network=default
gcloud sql instances patchquickstart-instance --require-ssl
データベースの作成
-
Google Cloud コンソールで Cloud SQL の [インスタンス] ページに移動します。
- [
quickstart-instance
] を選択します。 - SQL ナビゲーション メニューから [データベース] を選択します。
- [データベースを作成] をクリックします。
- [新しいデータベース] ダイアログ ボックスの [データベース名] フィールドに「
quickstart-db
」と入力します。 - [作成] をクリックします。
gcloud
sql databases create
コマンドを実行してデータベースを作成します。
gcloud sql databases createquickstart-db --instance=quickstart-instance
ユーザーを作成する
-
Google Cloud コンソールで Cloud SQL の [インスタンス] ページに移動します。
- インスタンスの [概要] ページを開くには、インスタンス名をクリックします。
- SQL ナビゲーション メニューから [ユーザー] を選択します。
- [ユーザー アカウントを追加] をクリックします。
- [ユーザー アカウントをインスタンス instance_name に追加] ページで、次の情報を追加します。
- ユーザー名:
quickstart-user
に設定します。 - パスワード: データベース ユーザーのパスワードを指定します。このクイックスタートの後半で使用するので、メモしておいてください。
- ユーザー名:
- [追加] をクリックします。
次のようにコマンドを実行する前に、DB_PASS をデータベース ユーザーのパスワードに置き換えます。このクイックスタートの後半で使用するので、メモしておいてください。
gcloud sql users create
コマンドを実行してリソースを作成します。
gcloud sql users createquickstart-user \ --instance=quickstart-instance \ --password=DB_PASS
ユーザー名の長さの上限は、オンプレミス PostgreSQL の場合と同じです。
GKE クラスタを作成する
-
Google Cloud コンソールで、Google Kubernetes Engine のページに移動します。
- [作成] をクリックします。
- GKE Autopilot の [構成] をクリックします。
- [名前] で、クラスタ名を
gke-cloud-sql-quickstart
と指定します。 - [作成] をクリックします。
gcloud container clusters create-auto
コマンドを実行して、汲田スタを作成します。
gcloud container clusters create-autogke-cloud-sql-quickstart \ --regionus-central1
Cloud Shell エディタで Cloud SQL サンプルアプリのクローンを作成する
Cloud SQL インスタンス、データベース、GKE クラスタを使用して、Cloud SQL インスタンスに接続するサンプル アプリケーションのクローンを作成し、構成できるようになりました。このクイックスタートの残りの手順では、gcloud
と kubectl
コマンドライン ツールを使用します。どちらのツールも Cloud Shell にプリインストールされています。
-
Cloud Shell エディタで、サンプルアプリのソースコードを開きます。
Cloud Shell エディタを開く -
Open in Cloud Shell
ダイアログで、[確認] をクリックしてサンプルアプリのコードをダウンロードし、Cloud Shell エディタでサンプルアプリ ディレクトリを開きます。
-
Cloud Shell エディタで、サンプルアプリのソースコードを開きます。
Cloud Shell エディタを開く -
Open in Cloud Shell
ダイアログで、[確認] をクリックしてサンプルアプリのコードをダウンロードし、Cloud Shell エディタでサンプルアプリ ディレクトリを開きます。
-
Cloud Shell エディタで、サンプルアプリのソースコードを開きます。
Cloud Shell エディタを開く -
Open in Cloud Shell
ダイアログで、[確認] をクリックしてサンプルアプリのコードをダウンロードし、Cloud Shell エディタでサンプルアプリ ディレクトリを開きます。
-
Cloud Shell エディタで、サンプルアプリのソースコードを開きます。
Cloud Shell エディタを開く -
Open in Cloud Shell
ダイアログで、[確認] をクリックしてサンプルアプリのコードをダウンロードし、Cloud Shell エディタでサンプルアプリ ディレクトリを開きます。
GKE クラスタを有効にする
作成した GKE クラスタをデフォルト クラスタとして有効にし、このクイックスタートの以降のコマンドで使用します。
gcloud container clusters get-credentials
コマンドを実行して、GKE クラスタを有効にします。gcloud container clusters get-credentialsgke-cloud-sql-quickstart \ --regionus-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
サンプルアプリの作成
-
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 .
-
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
-
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 .
-
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 .
サンプルアプリをデプロイする
パブリック IP
作成したサンプルアプリの構成を使用して、サンプルアプリをデプロイしてみましょう。
デプロイされたサンプルアプリは、Kubernetes サイドカー パターンで実行されている Cloud SQL Proxy を使用して Cloud SQL インスタンスに接続します。サイドカー パターンは、サンプルアプリのコンテナと同じ Kubernetes Pod を共有する追加のコンテナでワークロードをデプロイすることで実現されます。
-
gcloud sql instances describe
コマンドを実行して、Cloud SQL インスタンス接続名を取得します。gcloud sql instances describe
quickstart-instance --format='value(connectionName)' - Cloud Shell エディタで
deployment.yaml
ファイルを更新します。次のように置き換えます。<YOUR_KSA_NAME>
:ksa-cloud-sql
。<LOCATION>
:us-central1
。<YOUR_PROJECT_ID>
: プロジェクト ID。<YOUR-DB-SECRET>
:gke-cloud-sql-secrets
。<INSTANCE_CONNECTION_NAME>
: 前の手順でgcloud
コマンドから取得した Cloud SQL インスタンス接続名。形式は project_id:region:instance_name です。インスタンスの接続名は、Cloud SQL インスタンスの [概要] ページにも表示されます。
- Cloud Shell で、次のように
kubectl apply
コマンドを実行して、サンプルアプリをデプロイします。kubectl apply -f deployment.yaml
- 次のように
kubectl apply
コマンドを実行して、デプロイの前にロードバランサを追加し、インターネット経由でロードバランサにアクセスできるようにします。kubectl apply -f service.yaml
- 次のように
kubectl get
コマンドを実行して、サービスの詳細を取得します。kubectl get services
- サービスの詳細で外部 IP アドレスが利用可能になったらコピーします。アドレスが使用可能になるまで数分かかることがあります。
- デプロイされたサンプルアプリを表示します。ブラウザ ウィンドウを開き、サービスの外部 IP アドレスに移動します。
デプロイされたサンプルアプリは、Cloud SQL Java コネクタを使用して Cloud SQL インスタンスに接続します。
-
gcloud sql instances describe
コマンドを実行して、Cloud SQL インスタンス接続名を取得します。gcloud sql instances describe
quickstart-instance --format='value(connectionName)' - Cloud Shell エディタで
deployment.yaml
ファイルを更新します。次のように置き換えます。<YOUR_KSA_NAME>
:ksa-cloud-sql
。<LOCATION>
:us-central1
。<YOUR_PROJECT_ID>
: プロジェクト ID。<YOUR-DB-SECRET>
:gke-cloud-sql-secrets
。<INSTANCE_CONNECTION_NAME>
: 前の手順でgcloud
コマンドから取得した Cloud SQL インスタンス接続名。形式は project_id:region:instance_name です。インスタンスの接続名は、Cloud SQL インスタンスの [概要] ページにも表示されます。
- Cloud Shell で、次のように
kubectl apply
コマンドを実行して、サンプルアプリをデプロイします。kubectl apply -f deployment.yaml
- 次のように
kubectl apply
コマンドを実行して、デプロイの前にロードバランサを追加し、インターネット経由でロードバランサにアクセスできるようにします。kubectl apply -f service.yaml
- 次のように
kubectl get
コマンドを実行して、サービスの詳細を取得します。kubectl get services
- サービスの詳細で外部 IP アドレスが利用可能になったらコピーします。アドレスが使用可能になるまで数分かかることがあります。
- デプロイされたサンプルアプリを表示します。ブラウザ ウィンドウを開き、サービスの外部 IP アドレスに移動します。
デプロイされたサンプルアプリは、Kubernetes サイドカー パターンで実行されている Cloud SQL Proxy を使用して Cloud SQL インスタンスに接続します。サイドカー パターンは、サンプルアプリのコンテナと同じ Kubernetes Pod を共有する追加のコンテナでワークロードをデプロイすることで実現されます。
-
gcloud sql instances describe
コマンドを実行して、Cloud SQL インスタンス接続名を取得します。gcloud sql instances describe
quickstart-instance --format='value(connectionName)' - Cloud Shell エディタで
deployment.yaml
ファイルを更新します。次のように置き換えます。<YOUR_KSA_NAME>
:ksa-cloud-sql
。<LOCATION>
:us-central1
。<YOUR_PROJECT_ID>
: プロジェクト ID。<YOUR-DB-SECRET>
:gke-cloud-sql-secrets
。<INSTANCE_CONNECTION_NAME>
: 前の手順でgcloud
コマンドから取得した Cloud SQL インスタンス接続名。形式は project_id:region:instance_name です。インスタンスの接続名は、Cloud SQL インスタンスの [概要] ページにも表示されます。
- Cloud Shell で、次のように
kubectl apply
コマンドを実行して、サンプルアプリをデプロイします。kubectl apply -f deployment.yaml
- 次のように
kubectl apply
コマンドを実行して、デプロイの前にロードバランサを追加し、インターネット経由でロードバランサにアクセスできるようにします。kubectl apply -f service.yaml
- 次のように
kubectl get
コマンドを実行して、サービスの詳細を取得します。kubectl get services
- サービスの詳細で外部 IP アドレスが利用可能になったらコピーします。アドレスが使用可能になるまで数分かかることがあります。
- デプロイされたサンプルアプリを表示します。ブラウザ ウィンドウを開き、サービスの外部 IP アドレスに移動します。
デプロイされたサンプルアプリは、Kubernetes サイドカー パターンで実行されている Cloud SQL Proxy を使用して Cloud SQL インスタンスに接続します。サイドカー パターンは、サンプルアプリのコンテナと同じ Kubernetes Pod を共有する追加のコンテナでワークロードをデプロイすることで実現されます。
-
gcloud sql instances describe
コマンドを実行して、Cloud SQL インスタンス接続名を取得します。gcloud sql instances describe
quickstart-instance --format='value(connectionName)' - Cloud Shell エディタで
deployment.yaml
ファイルを更新します。次のように置き換えます。<YOUR_KSA_NAME>
:ksa-cloud-sql
。<LOCATION>
:us-central1
。<YOUR_PROJECT_ID>
: プロジェクト ID。<YOUR-DB-SECRET>
:gke-cloud-sql-secrets
。<INSTANCE_CONNECTION_NAME>
: 前の手順でgcloud
コマンドから取得した Cloud SQL インスタンス接続名。形式は project_id:region:instance_name です。インスタンスの接続名は、Cloud SQL インスタンスの [概要] ページにも表示されます。
- Cloud Shell で、次のように
kubectl apply
コマンドを実行して、サンプルアプリをデプロイします。kubectl apply -f deployment.yaml
- 次のように
kubectl apply
コマンドを実行して、デプロイの前にロードバランサを追加し、インターネット経由でロードバランサにアクセスできるようにします。kubectl apply -f service.yaml
- 次のように
kubectl get
コマンドを実行して、サービスの詳細を取得します。kubectl get services
- サービスの詳細で外部 IP アドレスが利用可能になったらコピーします。アドレスが使用可能になるまで数分かかることがあります。
- デプロイされたサンプルアプリを表示します。ブラウザ ウィンドウを開き、サービスの外部 IP アドレスに移動します。
プライベート IP
作成したサンプルアプリの構成を使用して、サンプルアプリをデプロイしてみましょう。
デプロイされたサンプルアプリは、Kubernetes サイドカー パターンで実行されている Cloud SQL Proxy を使用して Cloud SQL インスタンスに接続します。サイドカー パターンは、サンプルアプリのコンテナと同じ Kubernetes Pod を共有する追加のコンテナでワークロードをデプロイすることで実現されます。
-
gcloud sql instances describe
コマンドを実行して、Cloud SQL インスタンス接続名を取得します。gcloud sql instances describe
quickstart-instance --format='value(connectionName)' - Cloud Shell エディタで
deployment.yaml
ファイルを更新します。次のように置き換えて編集します。<YOUR_KSA_NAME>
をksa-cloud-sql
に置き換えます。<LOCATION>
をus-central1
に置き換えます。<YOUR_PROJECT_ID>
をプロジェクト ID で置き換えます。<YOUR-DB-SECRET>
をgke-cloud-sql-secrets
に置き換えます。<INSTANCE_CONNECTION_NAME>
を前の手順でgcloud
コマンドから取得した Cloud SQL インスタンス接続名に置き換えます。形式は project_id:region:instance_name です。インスタンスの接続名は、Cloud SQL インスタンスの [概要] ページにも表示されます。- プライベート IP アドレスを使用して Cloud SQL インスタンスに接続できるように、Cloud SQL Auth プロキシを有効にします。
#
コメント記号と末尾のホワイト スペースを削除して、"-ip_address_types=PRIVATE"
フラグのコメント化解除します。コメント化を解除したフラグは次のようになります。- "-ip_address_types=PRIVATE"
- Cloud Shell で、次のように
kubectl apply
コマンドを実行して、サンプルアプリをデプロイします。kubectl apply -f deployment.yaml
- 次のように
kubectl apply
コマンドを実行して、デプロイの前にロードバランサを追加し、インターネット経由でロードバランサにアクセスできるようにします。kubectl apply -f service.yaml
- 次のように
kubectl get
コマンドを実行して、サービスの詳細を取得します。kubectl get services
- サービスの詳細で外部 IP アドレスが利用可能になったらコピーします。アドレスが使用可能になるまで数分かかることがあります。
- デプロイされたサンプルアプリを表示します。ブラウザ ウィンドウを開き、サービスの外部 IP アドレスに移動します。
デプロイされたサンプルアプリは、Cloud SQL Java コネクタを使用して Cloud SQL インスタンスに接続します。
-
gcloud sql instances describe
コマンドを実行して、Cloud SQL インスタンス接続名を取得します。gcloud sql instances describe
quickstart-instance --format='value(connectionName)' - Cloud Shell エディタで
deployment.yaml
ファイルを更新します。次のように置き換えます。<YOUR_KSA_NAME>
:ksa-cloud-sql
。<LOCATION>
:us-central1
。<YOUR_PROJECT_ID>
: プロジェクト ID。<YOUR-DB-SECRET>
:gke-cloud-sql-secrets
。<INSTANCE_CONNECTION_NAME>
: 前の手順でgcloud
コマンドから取得した Cloud SQL インスタンス接続名。形式は project_id:region:instance_name です。インスタンスの接続名は、Cloud SQL インスタンスの [概要] ページにも表示されます。
- Cloud Shell で、次のように
kubectl apply
コマンドを実行して、サンプルアプリをデプロイします。kubectl apply -f deployment.yaml
- 次のように
kubectl apply
コマンドを実行して、デプロイの前にロードバランサを追加し、インターネット経由でロードバランサにアクセスできるようにします。kubectl apply -f service.yaml
- 次のように
kubectl get
コマンドを実行して、サービスの詳細を取得します。kubectl get services
- サービスの詳細で外部 IP アドレスが利用可能になったらコピーします。アドレスが使用可能になるまで数分かかることがあります。
- デプロイされたサンプルアプリを表示します。ブラウザ ウィンドウを開き、サービスの外部 IP アドレスに移動します。
デプロイされたサンプルアプリは、Kubernetes サイドカー パターンで実行されている Cloud SQL Proxy を使用して Cloud SQL インスタンスに接続します。サイドカー パターンは、サンプルアプリのコンテナと同じ Kubernetes Pod を共有する追加のコンテナでワークロードをデプロイすることで実現されます。
-
gcloud sql instances describe
コマンドを実行して、Cloud SQL インスタンス接続名を取得します。gcloud sql instances describe
quickstart-instance --format='value(connectionName)' - Cloud Shell エディタで
deployment.yaml
ファイルを更新します。次のように置き換えて編集します。<YOUR_KSA_NAME>
をksa-cloud-sql
に置き換えます。<LOCATION>
をus-central1
に置き換えます。<YOUR_PROJECT_ID>
をプロジェクト ID で置き換えます。<YOUR-DB-SECRET>
をgke-cloud-sql-secrets
に置き換えます。<INSTANCE_CONNECTION_NAME>
を前の手順でgcloud
コマンドから取得した Cloud SQL インスタンス接続名に置き換えます。形式は project_id:region:instance_name です。インスタンスの接続名は、Cloud SQL インスタンスの [概要] ページにも表示されます。- プライベート IP アドレスを使用して Cloud SQL インスタンスに接続できるように、Cloud SQL Auth プロキシを有効にします。
#
コメント記号と末尾のホワイト スペースを削除して、"-ip_address_types=PRIVATE"
フラグのコメント化解除します。コメント化を解除したフラグは次のようになります。- "-ip_address_types=PRIVATE"
- Cloud Shell で、次のように
kubectl apply
コマンドを実行して、サンプルアプリをデプロイします。kubectl apply -f deployment.yaml
- 次のように
kubectl apply
コマンドを実行して、デプロイの前にロードバランサを追加し、インターネット経由でロードバランサにアクセスできるようにします。kubectl apply -f service.yaml
- 次のように
kubectl get
コマンドを実行して、サービスの詳細を取得します。kubectl get services
- サービスの詳細で外部 IP アドレスが利用可能になったらコピーします。アドレスが使用可能になるまで数分かかることがあります。
- デプロイされたサンプルアプリを表示します。ブラウザ ウィンドウを開き、サービスの外部 IP アドレスに移動します。
デプロイされたサンプルアプリは、Kubernetes サイドカー パターンで実行されている Cloud SQL Proxy を使用して Cloud SQL インスタンスに接続します。サイドカー パターンは、サンプルアプリのコンテナと同じ Kubernetes Pod を共有する追加のコンテナでワークロードをデプロイすることで実現されます。
-
gcloud sql instances describe
コマンドを実行して、Cloud SQL インスタンス接続名を取得します。gcloud sql instances describe
quickstart-instance --format='value(connectionName)' - Cloud Shell エディタで
deployment.yaml
ファイルを更新します。次のように置き換えて編集します。<YOUR_KSA_NAME>
をksa-cloud-sql
に置き換えます。<LOCATION>
をus-central1
に置き換えます。<YOUR_PROJECT_ID>
をプロジェクト ID で置き換えます。<YOUR-DB-SECRET>
をgke-cloud-sql-secrets
に置き換えます。<INSTANCE_CONNECTION_NAME>
を前の手順でgcloud
コマンドから取得した Cloud SQL インスタンス接続名に置き換えます。形式は project_id:region:instance_name です。インスタンスの接続名は、Cloud SQL インスタンスの [概要] ページにも表示されます。- プライベート IP アドレスを使用して Cloud SQL インスタンスに接続できるように、Cloud SQL Auth プロキシを有効にします。
#
コメント記号と末尾のホワイト スペースを削除して、"-ip_address_types=PRIVATE"
フラグのコメント化解除します。コメント化を解除したフラグは次のようになります。- "-ip_address_types=PRIVATE"
- Cloud Shell で、次のように
kubectl apply
コマンドを実行して、サンプルアプリをデプロイします。kubectl apply -f deployment.yaml
- 次のように
kubectl apply
コマンドを実行して、デプロイの前にロードバランサを追加し、インターネット経由でロードバランサにアクセスできるようにします。kubectl apply -f service.yaml
- 次のように
kubectl get
コマンドを実行して、サービスの詳細を取得します。kubectl get services
- サービスの詳細で外部 IP アドレスが利用可能になったらコピーします。アドレスが使用可能になるまで数分かかることがあります。
- デプロイされたサンプルアプリを表示します。ブラウザ ウィンドウを開き、サービスの外部 IP アドレスに移動します。
クリーンアップ
このページで使用したリソースについて、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 インスタンスへの接続についても確認できます。