
始める前に
- ラボでは、Google Cloud プロジェクトとリソースを一定の時間利用します
- ラボには時間制限があり、一時停止機能はありません。ラボを終了した場合は、最初からやり直す必要があります。
- 画面左上の [ラボを開始] をクリックして開始します
Create a Cloud SQL Instance and database
/ 20
Create Service Account
/ 20
Create Secrets
/ 30
Deploy the SQL Proxy agent as a sidecar container
/ 30
このラボでは、SQL Proxy 経由で Cloud SQL に接続された WordPress の Kubernetes Deployment を設定します。SQL Proxy を使用すると、Cloud SQL インスタンスをローカル(localhost:3306)にインストールされているかのように操作できます。ローカルのポートがセキュリティで保護されていなくても、Cloud SQL インスタンスへのネットワーク接続は保護されます。
このラボを実行するには、いくつかのコンポーネントを作成します。まず GKE クラスタを作成し、次に接続先の Cloud SQL インスタンスを作成します。さらに Pod に Cloud SQL インスタンスへのアクセス権限を付与するサービス アカウントを作成します。これは Workload Identity を使用して認証されます。最後に、サイドカーとして SQL Proxy を使用し、Cloud SQL インスタンスに接続される WordPress を GKE クラスタにデプロイします。
このラボでは、次のタスクを行う方法について学びます。
各ラボでは、新しい Google Cloud プロジェクトとリソースセットを一定時間無料で利用できます。
Qwiklabs にシークレット ウィンドウでログインします。
ラボのアクセス時間(例: 1:15:00
)に注意し、時間内に完了できるようにしてください。
一時停止機能はありません。必要な場合はやり直せますが、最初からになります。
準備ができたら、[ラボを開始] をクリックします。
ラボの認証情報(ユーザー名とパスワード)をメモしておきます。この情報は、Google Cloud Console にログインする際に使用します。
[Google Console を開く] をクリックします。
[別のアカウントを使用] をクリックし、このラボの認証情報をコピーしてプロンプトに貼り付けます。
他の認証情報を使用すると、エラーが発生したり、料金の請求が発生したりします。
利用規約に同意し、再設定用のリソースページをスキップします。
最初のログイン手順を完了すると、プロジェクト ダッシュボードが表示されます。
Google Cloud Shell は、開発ツールと一緒に読み込まれる仮想マシンです。5 GB の永続ホーム ディレクトリが用意されており、Google Cloud で稼働します。
Google Cloud Shell を使用すると、コマンドラインで Google Cloud リソースにアクセスできます。
Google Cloud コンソールで、右上のツールバーにある [Cloud Shell をアクティブにする] ボタンをクリックします。
[続行] をクリックします。
環境がプロビジョニングされ、接続されるまでしばらく待ちます。接続した時点で認証が完了しており、プロジェクトに各自のプロジェクト ID が設定されます。次に例を示します。
gcloud は Google Cloud のコマンドライン ツールです。このツールは、Cloud Shell にプリインストールされており、タブ補完がサポートされています。
出力:
出力例:
出力:
出力例:
kubectl
コマンドライン ツールのタブ補完を構成します。Google Cloud コンソールのナビゲーション メニュー()で、[API とサービス] をクリックします。
[+ API とサービスの有効化] をクリックします。
[API とサービスを検索] に「SQL」と入力してから [Cloud SQL] API タイルをクリックします。
[有効にする] をクリックして、Cloud SQL API を有効にします。
API がすでに有効になっている場合は、代わりに [管理] ボタンが表示され、[API が有効です] のメッセージが表示されます。その場合は特に操作は必要ありません。
sql-instance
の名前をクリックしてから、[ユーザー] メニューをクリックします。既存の root
ユーザーが一覧に表示されたら、次の手順に進みます。
[ユーザー アカウントを追加] をクリックし、ユーザー名に「sqluser
」、パスワードに「sqlpassword
」を指定してアカウントを作成します。
[ホスト名] オプションを [すべてのホストを許可する(%)] に設定したまま、[追加] をクリックします。
インスタンス(sql-instance
)の [概要] メニューに戻り、インスタンス接続名をコピーします。
インスタンス接続名を表示するには、必要に応じて少し下にスクロールしてください。
mysql>
プロンプトが表示され、MySQL クライアントを使用して Cloud SQL インスタンスに接続していることがわかります。
wordpress
」という名前です。まだテーブルを作成していないので、空のセットが報告されます。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
サービス アカウントを作成するには、Google Cloud コンソールで [IAM と管理] > [サービス アカウント] に移動します。
[+ サービス アカウントを作成] をクリックします。
[サービス アカウント名] に「sql-access
」と入力した後、[作成して続行] をクリックします。
[ロールを選択] をクリックします。
「Cloud SQL」を検索し、[Cloud SQL クライアント] を選択して [続行] をクリックします。
[完了] をクリックします。
sql-access
サービス アカウントを見つけて、[操作] 列の「その他」アイコンをクリックします。
[鍵を管理] を選択します。
続いて [鍵を追加] をクリックし、[新しい鍵を作成] を選択します。
鍵の種類として [JSON] が選択されていることを確認し、[作成] をクリックします。
公開鍵と秘密鍵のペアが作成され、秘密鍵のファイルが自動的にパソコンにダウンロードされます。この JSON ファイルは後で必要になります。
credentials.json
に変更します。[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
Kubernetes の Secret を 2 つ作成します。1 つは MySQL 認証情報用で、もう 1 つは Google 認証情報(サービス アカウント)用です。
Cloud SQL ユーザー アカウントを作成する際に別のユーザー名とパスワードを使用した場合は、このコマンドのユーザー名とパスワードをそれらに置き換えてください。
Cloud Shell で、Cloud Shell メニューバーの右端にあるその他()をクリックします。
[アップロード] を選択し、[File] が選択された状態で [ファイル選択] をクリックします。前のタスクでダウンロードした credentials.json
認証情報ファイルを Cloud Shell にアップロードします。
Cloud Shell で、認証情報ファイルを現在の作業ディレクトリに移動します。
Cloud Shell にアップロードしたファイルは、ユーザーのホーム ディレクトリにアップロードされます。ファイルを現在の作業ディレクトリに移動しておくと、次の手順で実行する kubectl
コマンドの記述がシンプルになります。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
sql-proxy.yaml
という Deployment マニフェスト ファイルを作成します。このファイルは、SQL Proxy エージェントをサイドカー コンテナとして使ってデモの WordPress アプリケーション コンテナをデプロイします。
WordPress コンテナの環境設定で、WORDPRESS_DB_HOST は localhost の IP アドレスを使って指定されます。cloudsql-proxy
サイドカー コンテナは、前のタスクで作成した Cloud SQL インスタンスを参照するように構成されています。データベースのユーザー名とパスワードが秘密鍵として WordPress コンテナに渡され、Workload Identity が構成されます。また、インターネットから WordPress インスタンスへの接続を可能にする Service も作成されます。
次のコマンドを使用して、sql-proxy.yaml
というファイルを作成し、nano で開きます。
sql-proxy.yaml
ファイルの中に貼り付けます。Ctrl+O キーに続いて Enter キーを押し、編集したファイルを保存します。
Ctrl+X キーを押して nano テキスト エディタを終了します。
このマニフェストでは、次の重要なセクションに注目してください。
spec
セクションで、Kubernetes サービス アカウントが構成されます。WORDPRESS_DB_HOST
が 127.0.0.1:3306
に設定されているため、WordPress はポート 3306 でリッスンしている同じ Pod 内のコンテナに接続します。これは、SQL プロキシがデフォルトでリッスンするポートです。env
セクションでは、変数 WORDPRESS_DB_USER
と WORDPRESS_DB_PASSWORD
が、前のタスクで作成した sql-credential
Secret に入っている値を使用して設定されます。cloudsql-proxy
コンテナ セクションでは、SQL 接続名を定義するコマンド スイッチ "-instances=<インスタンス接続名>
に、(ConfigMap や Secret を使って設定されない)プレースホルダ変数が含まれています。したがって、このサンプル マニフェスト内でこの変数を直接更新して Cloud SQL インスタンスを参照させる必要があります。wordpress-service
」という外部 LoadBalancer を作成します。sed
を使用して、SQL 接続名のプレースホルダ変数を実際の Cloud SQL インスタンスのインスタンス名に更新します。出力:
wordpress-service の外部の LoadBalancer IP アドレスは、WordPress ブログに接続するために使用するアドレスです。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
これらの値のいずれも特に重要ではなく、今後使うことはありません。
数秒後に [Success!] 通知が表示されます。 WordPress の管理画面をご覧になりたい場合はログインできますが、このラボでは必須ではありません。
初期化プロセスにより、Cloud SQL インスタンスの WordPress データベース内にデータベース テーブルとデータが新たに作成されました。次に、この新しいデータベース テーブルが SQL プロキシ コンテナを使用して作成されていることを検証します。
mysql>
プロンプトが表示され、MySQL クライアントを使用して Cloud SQL インスタンスに接続していることがわかります。
WordPress の初期化時に作成された新しいデータベース テーブルがいくつか表示されます。これは、サイドカーの SQL Proxy コンテナが正しく構成されたことを示しています。
WordPress の管理者アカウントのデータベース レコードが一覧表示され、WordPress の初期化時に選択したメールアドレスが表示されます。
ラボが完了したら、[ラボを終了] をクリックします。ラボで使用したリソースが Google Cloud Skills Boost から削除され、アカウントの情報も消去されます。
ラボの評価を求めるダイアログが表示されたら、星の数を選択してコメントを入力し、[送信] をクリックします。
星の数は、それぞれ次の評価を表します。
フィードバックを送信しない場合は、ダイアログ ボックスを閉じてください。
フィードバックやご提案の送信、修正が必要な箇所をご報告いただく際は、[サポート] タブをご利用ください。
Copyright 2020 Google LLC All rights reserved. Google および Google のロゴは Google LLC の商標です。その他すべての企業名および商品名はそれぞれ各社の商標または登録商標です。
このコンテンツは現在ご利用いただけません
利用可能になりましたら、メールでお知らせいたします
ありがとうございます。
利用可能になりましたら、メールでご連絡いたします
1 回に 1 つのラボ
既存のラボをすべて終了して、このラボを開始することを確認してください