LoginSignup
1
0

More than 5 years have passed since last update.

3. Webモジュールからアクセスするデータベースを作成

Last updated at Posted at 2019-03-14

はじめに

本記事は以下2の続きです。
1. Google Kubernetes Engine(GKE)でJavaのWebモジュールをサッと動かしてみる
2. Dockerイメージの作成とRegistry登録
3. Webモジュールからアクセスするデータベースを作成
4. マニフェストの作成とWebモジュールの実行

3-1. データベースの作成

手順3-1.1

Webモジュールからアクセスするデータベースを作成します。
サイドメニューで「SQL」をクリックします。
詳細画面がでたら「インスタンス作成」をクリックします。
020.png
021.png

手順3-1.2

続いて「PostgreSQL」をクリックします。
022.png

手順3-1.3

詳細画面でインスタンスIDに「sample-app-ist」とデフォルトユーザーのパスワードに「123456」を入力します。
023.png

手順3-1.4

さらに「設定オプションを表示」をクリックします。
024.png

手順3-1.5

プライベートIPをチェックします。
025.png

手順3-1.6

詳細画面が表示された場合は「APIを有効にする」をクリックします。
026.png

手順3-1.7

「作成」をクリックします。
027.png

手順3-1.8

しばらくしてデータベースインスタンスの作成が終わりました。
028.png

手順3-1.9

続けてデータベースインスタンスをクリックし詳細画面でデータベースをクリックします。さらに「データベースを作成」をクリックします。
029.png

手順3-1.10

データベース名に「sample-app-db」を入力し「作成」をクリックします。
030.png

手順3-1.11

データベースが作成されました。
031.png

手順3-1.12

早速、データベースインスタンスに接続します。
パスワードを求められたら「123456」を入力します。

[userid]@cloudshell:~ ([project_id])$ sudo gcloud sql connect sample-app-ist --user=postgres
Whitelisting your IP for incoming connection for 5 minutes...done.
Connecting to database with SQL user [postgres].Password for user postgres:
psql (9.6.11, server 9.6.10)
SSL connection (protocol: TLSv1.2, cipher: ECDHE-RSA-AES128-GCM-SHA256, bits: 128, compression: off)
Type "help" for help.

手順3-1.13

操作対象のデータベースがpostgresになっているので先ほど作成したsample-app-dbに切り替えます。パスワードを求められたら「123456」を入力します。

postgres=> \connect sample-app-db
Password for user postgres:
psql (9.6.11, server 9.6.10)
SSL connection (protocol: TLSv1.2, cipher: ECDHE-RSA-AES128-GCM-SHA256, bits: 128, compression: off)
You are now connected to database "sample-app-db" as user "postgres".

手順3-1.14

次に後で使用するproxyuserを作成し、データベースへの接続と権限を与えます。proxyuserに切り替えた後(パスワードを求められたら「123456」を入力)にt_sampleテーブルを作成し、1件テストデータをINSERTします。

sample-app-db=> CREATE ROLE proxyuser WITH LOGIN PASSWORD '123456';
CREATE ROLE
sample-app-db=> GRANT CONNECT ON DATABASE "sample-app-db" TO proxyuser;
sample-app-db=> \connect - proxyuser
Password for user proxyuser:
psql (9.6.11, server 9.6.10)
SSL connection (protocol: TLSv1.2, cipher: ECDHE-RSA-AES128-GCM-SHA256, bits: 128, compression: off)
You are now connected to database "sample-app-db" as user "proxyuser".
sample-app-db=> CREATE TABLE t_sample (order_no BIGINT NOT NULL, cre_dt TIMESTAMP NOT NULL default CURRENT_TIMESTAMP, nickname VARCHAR(30), order_id VARCHAR(5000));
CREATE TABLE
sample-app-db=> INSERT INTO t_sample (order_no, cre_dt, nickname, order_id) VALUES (1, '1999-01-08 04:05:06', 'テスト', 'ABC');
INSERT 0 1

手順3-1.15

作成したテーブルを確認します。

sample-app-db=> \dt
           List of relations
 Schema |   Name   | Type  |   Owner
--------+----------+-------+-----------
 public | t_sample | table | proxyuser
(1 row)

3-2. データベースインスタンスへの接続に必要な設定

手順3-2.1

GKEからデータベースインスタンスへの接続に必要な設定を行います。
まず、Cloud SQL Administration API を有効にするをクリックします。

手順3-2.2

「アプリケーションを登録するプロジェクトの選択」を入力し「続行」をクリックします。
034.png

手順3-2.3

これでCloud SQL Administration APIが有効になりました。
プロジェクトへの認証情報の追加では「キャンセル」をクリックします。
036.png

手順3-2.4

続いて「IAMと管理」 -> 「サービスアカウント」をクリックします。
※サービスアカウントは、個々のエンドユーザーではなく、アプリケーションや仮想マシン(VM)に属している特別なGoogleアカウントです。アプリケーションはサービスアカウントを使用して、ユーザーの関与を必要とせずにGoogleのサービスAPIを呼び出すことができます。
※必ずCloud SQL Administration APIの有効化を先に済ませてください。
032.png

手順3-2.5

「サービスアカウントを作成」をクリックします。
033.png

手順3-2.6

サービスアカウント名に「sample-app-db-client」を入力し「作成」をクリックします。
037.png

手順3-2.7

役割に「Cloud SQL クライアント」を入力し「続行」をクリックします。
038.png

手順3-2.8

最後に「キーを作成」をクリックします。
040.png

手順3-2.9

詳細画面で「JSON」が選ばれていることを確認し「作成」をクリックします。
041.png

手順3-2.10

ブラウザにJSONファイルがダウンロードされます。
042.png

手順3-2.11

ブラウザにダウンロードされたJSONファイルをアップロードします。
043.png

手順3-2.12

ファイルがアップロードされたか確認します。

[userid]@cloudshell:~ ([project_id])$ ls -Fal
-rw-r--r-- 1 [userid] xxxxxxx      2361 Mar 10 09:25 [project_id]-xxxxxxxxxxxx.json

手順3-2.13

先ほどアップロードしたJSONを指定してsecretを作成します。
※[project_id]-xxxxxxxxxxxxの部分は各自の環境に合わせ書き換えてください。

[userid]@cloudshell:~ ([project_id])$ kubectl create secret generic cloudsql-instance-credentials --from-file=credentials.json=[project_id]-xxxxxxxxxxxx.json
secret "cloudsql-instance-credentials" created

手順3-2.14

Cloud Sql Proxyがデータベース・アクセス時に使うユーザとパスワードを指定してsecretを作成します。

[userid]@cloudshell:~ ([project_id])$ kubectl create secret generic cloudsql-db-credentials --from-literal=username=proxyuser --from-literal=password=123456
secret "cloudsql-db-credentials" created

以上

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0