本教程介绍如何使用 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。
-
配置 gcloud CLI 以使用您的联合身份。
如需了解详情,请参阅使用联合身份登录 gcloud CLI。
-
如需初始化 gcloud CLI,请运行以下命令:
gcloud init -
在系统上安装 Python、
pip和virtualenv。如需查看说明,请参阅 为设置 Python 开发环境 。 Cloud de Confiance by S3NS
创建 Cloud Storage 存储桶
以下说明详细介绍了如何创建 Cloud Storage 存储桶。存储分区是 Cloud Storage 中用于存放数据的基本容器。
在终端窗口中,创建一个 Cloud Storage 存储桶,其中 YOUR_BUCKET_NAME 表示存储桶的名称:
gcloud storage buckets create gs://YOUR_BUCKET_NAME
如需在 Bookshelf 应用中查看上传的图片,请将该存储桶的 Identity and Access Management 政策设置为向
allUsers授予legacyObjectReader角色: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在浏览器中,输入以下地址:
要停止本地网络服务器,请按 Control+C。如果您要退出虚拟环境,请输入 deactivate。
部署示例应用
将代码推送到代码库
您可以通过多种方式将代码添加到正在运行的 Compute Engine 实例。其中一种方法是使用 Cloud Source Repositories。 每个项目都包含可供 Compute Engine 实例使用的 Git 代码库。然后,您的实例可以在启动过程中拉取应用代码的最新版本。这样,当您更新应用时,就不需要配置新映像或实例;您只需重启现有实例或创建一个新实例,因此使用 Git 代码库非常方便。
首次使用 Git 时,请使用
git config --global设置 您的身份。在您的 Cloud de Confiance 控制台中,创建代码库:
然后,将您的应用代码推送到您项目的代码库,其中
[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当至少有一个实例报告
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 模板语言编写的。您可以使用 Jinja 或 Python 编写 Deployment Manager 模板。其中,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
后续步骤
探索有关 Google Cloud 的参考架构、图表和最佳实践。 查看我们的 Cloud 架构中心。