自動プロビジョニングのフローを使用すると、数回のクリックでタグ設定サーバーを Cloud Run にデプロイできますが、他の環境でタグ設定サーバーをプロビジョニングする場合は、手動で行います。タグ設定サーバーとは、Docker イメージ内の Node.js サーバーのことです。
タグ設定サーバーを手動でプロビジョニングするには、サーバーサイド タグ設定(SST)クラスタとプレビュー サーバーを個別にプロビジョニングする必要があります。サーバーサイド タグ設定の概要で説明されているように、SST クラスタはタグ設定サーバーへのすべてのリクエストのエントリ ポイントで、リクエストを処理します。プレビュー サーバーはコンテナをプレビューするために必要です。
図 1 は、タグ設定サーバーとプレビュー サーバー間のデータフローを示しています。
図 1: タグ設定サーバーとプレビュー サーバーのデータフローの図
このガイドでは、以下の方法について説明します。
- Docker イメージで使用可能なすべての設定を表示する
- (省略可)BigQuery の認証情報を組み込む
- SST Docker イメージを使用してプレビュー サーバーを手動でプロビジョニングする
- SST Docker イメージを使用して SST クラスタを手動でプロビジョニングする
- プレビュー サーバーと SST クラスタが正しく構成されていることを確認する
- サーバーのプロビジョニング後、タグ設定サーバーを最新のバージョンに保つ
このガイドの Docker コマンドを実行するには、まずパソコンに Docker をインストールする必要があります。
Docker イメージで使用可能なすべての設定を表示する
タグ設定サーバーの Docker イメージは、以下の URL から確認できます。
gcr.io/cloud-tagging-10302018/gtm-cloud-image:stable
タグ設定サーバーとプレビュー サーバーは同じ Docker イメージを別のフラグで使用します。このセクションでは、Docker イメージで使用できるすべての設定を調べる方法について説明します。
使用可能なすべての設定を表示するには、Docker コマンドライン ツールを使用して次のコマンドを実行します。
docker run gcr.io/cloud-tagging-10302018/gtm-cloud-image:stable server_bin.js --help
(任意)Google Cloud の認証情報を組み込む
BigQuery
または Firestore
の API を Google Cloud の外で使用するには、それらのリソースへのアクセスを許可されたサービス アカウントの認証情報が必要です。
- ガイドに沿って、必要なロール(
BigQuery
へのアクセスの場合は「BigQuery データ編集者」ロール、Firestore
へのアクセスの場合は「Cloud Datastore ユーザー」ロール)を持つサービス アカウントを作成し、そのアカウントの JSON 認証情報を「local_service_account_key.json
」というファイル名でエクスポートします。 - イメージからアクセス可能なボリュームに JSON 認証情報をマウントします。
docker run
を使用し、-v local_service_account_key.json:/app/service_account_key.json
を指定してイメージ内に認証情報をマウントします。 GOOGLE_APPLICATION_CREDENTIALS
環境変数がこの認証情報を参照するように設定します。- 必要に応じて、
GOOGLE_CLOUD_PROJECT
環境変数に Google Cloud プロジェクト ID を指定し、タグ設定サーバーで自動的にプロジェクトが選択されるようにします。 サーバーを実行します。次のコマンドは、設定した認証情報を使用してタグ設定サーバーを実行します。
docker run -v local_service_account_key.json:/app/service_account_key.json \ -p 8080:8080 \ -e GOOGLE_APPLICATION_CREDENTIALS='/app/service_account_key.json' \ -e GOOGLE_CLOUD_PROJECT='<your project id>' \ -e CONTAINER_CONFIG='<config string>' \ gcr.io/cloud-tagging-10302018/gtm-cloud-image:stable
タグ設定サーバーがデプロイされたシステムによっては、認証情報のマウント方法が異なる場合があります。たとえば、Kubernetes と Docker Swarm では Secret(機密情報)管理のガイドが用意されています。詳しくは各システムのガイドをご覧ください。
認証情報を保護できるよう、ベスト プラクティスに沿って設定してください。
プレビュー サーバーを手動でプロビジョニングする
プレビュー サーバーでは、サーバー コンテナをプレビューできます。プレビュー サーバーを実行するには、Docker 環境に次の環境変数を渡して Docker イメージを実行します。
必須の設定
CONTAINER_CONFIG
- サーバー コンテナの設定文字列。タグ マネージャーで、サーバー コンテナのワークスペースに移動し、ページの右上にあるコンテナ ID をクリックします。[タグ設定サーバーを手動でプロビジョニングする] をクリックして、コンテナ設定の値を確認します。RUN_AS_PREVIEW_SERVER
- サーバーをプレビュー サーバーとしてプロビジョニングするには、この値をtrue
に設定します。
Docker コマンドライン ツールを使用した例
プレビュー サーバーをローカルでプロビジョニングするには、次のコマンドを実行します。
docker run -p 8080:8080 -e CONTAINER_CONFIG='<config string>' -e RUN_AS_PREVIEW_SERVER=true gcr.io/cloud-tagging-10302018/gtm-cloud-image:stable
http://localhost:8080/healthz
へのリクエストの 200 レスポンスが表示されるはずです。必要に応じて、PORT
環境変数を使用してポートを変更します。
ベスト プラクティス
- デプロイできるプレビュー サーバーは 1 つのみです。複数のインスタンスを使った自動スケーリングを構成しないように注意してください。
- Docker を使用してプレビュー サーバーを設定したら、プレビュー サーバーを指す HTTPS URL を設定します。これは、SST クラスタの設定に必要です。
- プレビュー モードを正しく動作させるためには、ロードバランサまたは CDN のタイムアウトを 20 秒よりも長くしておく必要があります。
サーバーサイド タグ設定クラスタを手動でプロビジョニングする
サーバーサイド タグ設定の概要で説明されているように、SST クラスタはエントリ ポイントとして機能したり、プレビュー サーバーにプレビュー リクエストをプロキシしたり、他のすべてのリクエストを処理したりします。Docker をサポートする環境で SST クラスタをプロビジョニングするには、タグ設定サーバーの Docker イメージで次の必須の設定を使用します。
必須の設定
CONTAINER_CONFIG
- サーバー コンテナの設定文字列。タグ マネージャーで、サーバー コンテナのワークスペースに移動し、ページの右上にあるコンテナ ID をクリックします。[タグ設定サーバーを手動でプロビジョニングする] をクリックして、コンテナ設定の値を確認します。PREVIEW_SERVER_URL
- プレビュー サーバーの HTTPS URL。この設定は、タグ設定サーバーをプロビジョニングするためのもので、プレビュー サーバーのプロビジョニングには必要ありません。プレビュー サーバーの設定については、前のセクションをご覧ください。
Docker コマンドライン ツールを使用した例
単一のタグ設定サーバーをローカルでプロビジョニングするには、次のコマンドを実行します。
docker run -p 8080:8080 -e CONTAINER_CONFIG='<config string>' -e PREVIEW_SERVER_URL='<HTTPS preview server url>' gcr.io/cloud-tagging-10302018/gtm-cloud-image:stable
http://localhost:8080/healthz
へのリクエストの 200 レスポンスが表示されるはずです。必要に応じて、PORT
環境変数を使用してポートを変更します。
ベスト プラクティス
- サーバーサイド タグ設定サーバーは、単一サーバーまたはクラスタのどちらでもプロビジョニングできますが、可用性、拡張性、およびパフォーマンスの点で優れているクラスタとしてプロビジョニングすることをおすすめします。クラスタとしてプロビジョニングする場合、各サーバー インスタンスは
CONTAINER_CONFIG
とPREVIEW_SERVER_URL
の同じ環境変数で設定されている必要があります。 - SST クラスタのデプロイは、アプリケーションを提供するサブドメインとは別の新しいサブドメインを指している必要があります。たとえば、アプリケーションが example.com でウェブ トラフィックを配信する場合は、タグ設定サーバーに analytics.example.com などのサブドメインを使用します。
- Docker を使用して SST クラスタを設定したら、SST クラスタを指す HTTPS URL を設定します。
- サーバーの SST で最新のコードに更新されるように、必ずサーバーを定期的に再起動してください。これを行わないと、新しい SST 機能に対する互換性が失われる可能性があります。サーバーを再起動する必要があるタイミングを知るひとつの方法は、実行チェックの設定です。これについては後述します。なお、サーバー コンテナに公開された更新はすべて、再起動しなくても適用されます。
- タグ設定サーバー上で既存の
/healthz
エンドポイント(https://analytics.example.com/healthz
など)を活用して、実行チェックを設定します。異常レスポンスを受け取ったら、サーバーを再起動する必要があります。 - Docker コンテナにはデフォルトのヘルスチェック コマンド(
HEALTHCHECK CMD ["/nodejs/bin/node", "/app/health_checker_bin.js"]
)が含まれており、実行すると/healthz
エンドポイントが定期的にクエリされます。Docker のヘルスチェックを利用している場合、Docker が提供している手順で設定を変更できます。 - プレビュー サーバーとタグ設定サーバーのオリジンが同一の場合、プレビュー サーバーはタグ設定サーバーとは別のパスでホストする必要があります。
PREVIEW_SERVER_URL
に、パスを含む値を指定しましょう。 - プロビジョニングされたサーバーで使用できる vCPU は 1 つだけです。それ以上の vCPU は使用されず、自動スケーリングに悪影響を及ぼします。
検証
サーバー コンテナの URL を設定する
タグ マネージャーでサーバー コンテナに移動します。[管理] > [コンテナの設定] で、[サーバー コンテナの URL] 欄にタグ設定サーバーの URL を入力し、[保存] をクリックします。
プレビュー モードで検証する
タグ マネージャーのワークスペースで、[プレビュー] をクリックしてコンテナをプレビューし、プレビュー ページが読み込まれることを確認します。ブラウザの別のタブで、サーバー コンテナ URL の任意のパスを開きます。送信されたリクエストがプレビュー ページに表示される場合は、正しく設定されています。
同じタグ設定サーバーに複数のサブドメインをマッピングしてある場合、各サブドメインをプレビューするには、[管理] > [コンテナの設定] で、サーバー コンテナの URL を必要なだけ追加します。複数の URL を指定した場合、URL パス(ドメイン名より後の文字列)はすべて一致している必要があります。たとえば example.com/abc
と example2.com/abc
はプレビュー可能ですが、example.com/abc
と example2.com/def
はプレビューできません。複数の URL が追加してある場合、[プレビュー] ボタンの隣にアイコンが表示され、プレビューする URL を選択できます。
タグ設定サーバーのバージョンをアップデートする
gtm-cloud-image イメージには、Node.js と、タグ設定サーバーが機能するために必要なライブラリ群が含まれています。Docker イメージは、セキュリティ修正や新機能追加のため定期的にアップデートされています。最低でも各メジャー バージョン リリースへのアップグレード(例: バージョン 1.x.x から 2.x.x へのアップグレード)は行うことをおすすめします。
Docker イメージをアップデートするには:
- イメージの現バージョンを
gcr.io/cloud-tagging-10302018/gtm-cloud-image:stable
で取得します。 - 以前のデプロイと同じ設定でサーバーをデプロイします。
- プレビュー サーバー(単一)と、クラスタ内のタグ設定サーバーすべてをアップデートします。
- 古いサーバーがあればシャットダウンします。
アップデートが正常に終了したことを確認します。手順は次のとおりです。
- サーバー コンテナで、[プレビュー] ボタンをクリックして、新しいデバッグ セッションを開始し、別のタブでリクエストを送信します。
- 概要で、[コンソール] タブを選択し、タグ設定サーバーの更新を求めるメッセージがないことを確認します。
タグ マネージャーでは、サーバーが正常に更新されてから最大 1 日の間、タグ設定サーバーの更新を求めるメッセージが表示される場合があります。ただし、プレビュー ページには、タグ設定サーバーのバージョンに関する最新のメッセージが表示されます。