このチュートリアルでは、Cloud Deployment Manager を使用して Python Bookshelf サンプルアプリをデプロイする方法を説明します。
Deployment Manager を使用することで、宣言的で反復可能なプロセスを通して、デプロイに必要なCloud de Confiance by S3NS リソースをワンステップで作成できます。Deployment Manager では、デプロイの更新と時系列による変更の追跡が可能です。Jinja や Python を使用してテンプレートを作成し、パラメータ化できるため、類似のデプロイでテンプレートを共有できます。
目標
- Bookshelf サンプルアプリのクローンを作成し、構成する。
- Deployment Manager の構成とテンプレートを作成する。
- Deployment Manager のデプロイを作成する。
- Deployment Manager を使用して、Bookshelf サンプルアプリをデプロイする。
費用
このドキュメントでは、課金対象である次の Cloud de Confiance by S3NSコンポーネントを使用します。
このドキュメントに記載されているタスクの完了後、作成したリソースを削除すると、それ以上の請求は発生しません。詳細については、クリーンアップをご覧ください。
始める前に
-
In the Cloud de Confiance console, on the project selector page, select or create a Cloud de Confiance project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Cloud de Confiance project.
Enable the Datastore API, Cloud Storage API, Pub/Sub API APIs.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
Google Cloud CLI をインストールします。
-
フェデレーション ID(連携 ID)を使用するように gcloud CLI を構成します。
詳細については、連携 ID を使用して gcloud CLI にログインするをご覧ください。
-
gcloud CLI を初期化するには、次のコマンドを実行します。
gcloud init -
Python、
pip、virtualenvをシステムにインストールします。手順については、 Cloud de Confiance by S3NS用の Python 開発環境の設定をご覧ください。
Cloud Storage バケットを作成する
以下では、Cloud Storage バケットの作成方法を詳しく説明します。バケットとは、Cloud Storage 内でデータを保持する基本のコンテナです。
ターミナル ウィンドウで Cloud Storage バケットを作成します。ここで、YOUR_BUCKET_NAME はバケットの名前を表します。
gcloud storage buckets create gs://YOUR_BUCKET_NAME
Bookshelf アプリでアップロードした画像を表示するには、バケットの Identity and Access Management ポリシーを設定して、
legacyObjectReaderロールをallUsersに付与します。gcloud storage buckets add-iam-policy-binding gs://YOUR_BUCKET_NAME --member=allUsers --role=roles/storage.legacyObjectReader
サンプルアプリのクローン作成
サンプルアプリは GitHub の GoogleCloudPlatform/getting-started-python で入手できます。
リポジトリのクローンを作成します。
git clone https://github.com/GoogleCloudPlatform/getting-started-python.git -b stepsサンプル ディレクトリに移動します。
cd getting-started-python/7-gce
アプリの構成
config.pyを編集用に開きます。PROJECT_IDの値をプロジェクト ID に設定します。値
CLOUD_STORAGE_BUCKETを Cloud Storage バケットの名前に設定します。
config.pyを保存して閉じます。
ローカル パソコン上でのアプリの実行
隔離された Python 環境を作成し、依存関係をインストールします。
Linux / MacOS
virtualenv -p python3 env source env/bin/activate pip install -r requirements.txtWindows
virtualenv -p python3 env env\scripts\activate pip install -r requirements.txtアプリケーションを実行します。
python main.pyブラウザに次のアドレスを入力します。
ローカル ウェブサーバーを停止するには、Ctrl+C キーを押します。 仮想環境を終了する場合は、「deactivate」と入力します。
サンプルアプリのデプロイ
コードをリポジトリに push する
コードを実行中の Compute Engine インスタンスに取得するにはいくつかの方法があります。そのうちの 1 つは、Cloud Source Repositories を使用するという方法です。 Compute Engine インスタンスに使用可能なすべてのプロジェクトには、Git リポジトリが含まれています。インスタンスは、起動時に最新バージョンのアプリのコードを pull します。Git リポジトリを使用すると、アプリの更新時に新しいイメージやインスタンスを構成する必要がないため便利です。既存のインスタンスを再起動するか、インスタンスを作成するだけで済みます。
Git を初めて使用する場合は、
git config --globalを使用して自分の ID を設定します。Cloud de Confiance コンソールで、リポジトリを作成します。
アプリのコードをプロジェクトのリポジトリに push します。
[YOUR_PROJECT_ID]はプロジェクト ID、[YOUR_REPO]リポジトリの名前です。git commit -am "Updating configuration" git config credential.helper gcloud.sh git remote add cloud https://source.developers.google.com/p/[YOUR_PROJECT_ID]/r/[YOUR_REPO] git push cloud master
デプロイの作成
構成がコミットされ、コードが Cloud Source Repositories にアップロードされると、Deployment Manager を使用してデプロイを作成できます。
deployment_managerディレクトリに移動します。cd getting-started-python/7-gce/gce/deployment_managerデプロイを作成します。
gcloud deployment-manager deployments create my-deployment --config config.yamlすべてのデプロイのリストを表示します。
gcloud deployment-manager deployments listデプロイと作成されたリソースの説明を取得します。
gcloud deployment-manager deployments describe my-deployment
アプリの表示
転送ルールを作成した後、構成が反映され、トラフィックがインスタンスにルーティングされるまでには数分かかる場合があります。
進行状況を確認するには、次のコマンドを実行します。
gcloud compute backend-services get-health bookshelf-my-deployment-frontend --global少なくとも 1 つのインスタンスで
HEALTHYが報告されたら、ロードバランサの転送 IP アドレスを取得します。gcloud compute forwarding-rules list --global転送ルールの IP アドレスは
IP_ADDRESS列に表示されます。ブラウザで、リストから取得した IP アドレスを入力します。
アプリが Cloud de Confianceで実行されるようになりました。
コードについて
デプロイの構成
デプロイがどのように構成されているかは、config.yaml で確認できます。
この構成ファイルでは、テンプレート ファイルをリソースとして読み込み、bookshelf という名前のリソースの定義に使用します。テンプレートはパラメータとして複数のプロパティを持っています。Deployment Manager 構成ファイルの作成に関する詳細については、構成の作成をご覧ください。
デプロイ テンプレートのスキーマの構成
スキーマ ファイル bookshelf.jinja.schema を確認します。これは、デプロイがその構成ファイルに提供するパラメータを定義し、ドキュメント化します。構成スキーマの詳細については、スキーマの使用をご覧ください。
デプロイ テンプレートの構成
テンプレートは複数のリソースを定義し、自動スケーリングされ、負荷分散されたマネージド インスタンス グループを作成します。作成されたリソースの完全な説明については、テンプレート内の Compute Engine の Bookshelf チュートリアルをご覧ください。
Deployment Manager ではクラウド リソースを宣言型の方法で定義できますが、リソースの構成の大部分はそのリソースの API によって定義されます。たとえば、インスタンス テンプレート リソースの構成オプションのほとんどは、Compute Engine API のリファレンス ドキュメント内にあるインスタンス テンプレートのリソース定義で確認できます。
テンプレートは、Jinja テンプレート言語を使用して作成します。Deployment Manager のテンプレート作成時には、Jinja または Python を使用できます。Jinja にはより宣言的であるという利点があるため、Python より読みやすく、理解しやすいとされています。一部の複雑なデプロイについては、Python の完全な表現力により簡略化できる場合があります。この場合、必要なリソースの作成には Jinja で十分です。
テンプレート内では、特定の環境変数が自動的に設定されます。これらには、env ディクショナリを使用してアクセスできます。この場合、作成されたリソースに名前を割り当てるときに再利用する名前としてデプロイの名前が参照されます。使用可能な環境変数については、Deployment Manager のドキュメントの環境変数の使用をご覧ください。
テンプレートは、Compute Engine チュートリアルで使用されるのと同じ起動スクリプトを使用します。スクリプトのコンテンツがテンプレートに挿入され、Jinja インデント ディレクティブによりコンテンツが正しくインデントされます。
Deployment Manager Jinja テンプレートでは、テンプレートの他の場所で作成されたリソースを参照することもできます。次の例では、バックエンド サービスはマネージド インスタンス グループのリファレンスを使用して、参照先のインスタンス グループを取得します。
config.yaml で指定されたプロパティはテンプレートで使用できます。
クリーンアップ
このチュートリアルで使用したリソースについて、Google Cloud アカウントに課金されないようにするには、リソースを含むプロジェクトを削除するか、プロジェクトを維持して個々のリソースを削除します。
プロジェクトの削除
課金されないようにする最も簡単な方法は、チュートリアル用に作成したプロジェクトを削除することです。
プロジェクトを削除するには:
- Cloud de Confiance コンソールで [リソースの管理] ページに移動します。
- プロジェクト リストで、削除するプロジェクトを選択し、[削除] をクリックします。
- ダイアログでプロジェクト ID を入力し、[シャットダウン] をクリックしてプロジェクトを削除します。
デプロイを削除する
デプロイを削除するには、次のコマンドを入力します。このコマンドを実行すると、デプロイに関連付けられたロードバランサと Compute Engine インスタンスが削除されます。
gcloud deployment-manager deployments delete my-deployment
次のステップ
Deployment Manager テンプレートの定義の詳細を確認する。
Google Kubernetes Engine で Python Bookshelf サンプルアプリを実行する方法を学ぶ。
Google Cloud に関するリファレンス アーキテクチャ、図、ベスト プラクティスを確認する。Cloud アーキテクチャ センターをご覧ください。
他の Cloud de Confiance サービスを探す。