Deployment Manager 基础知识

以下组件是 Deployment Manager 的基础。

配置

配置描述您希望为单个部署包括的所有资源。 配置是以 YAML 语法编写的文件,其中列出您要创建的每项资源及其各自的资源属性。配置必须包含 resources: 部分,后跟要创建的资源列表。

每项资源必须包含三个组成部分:

  • name - 用于标识此资源的用户定义字符串,如 my-vmproject-data-diskthe-test-network
  • type - 所部署资源的类型,如 compute.v1.instancecompute.v1.disk支持的资源类型文档中列出并介绍了基本资源类型。
  • properties - 此资源类型的参数。它们必须与类型的属性相匹配,如 zone: asia-east1-aboot: true

下面是一个示例配置:

resources:
- name: the-first-vm
  type: compute.v1.instance
  properties:
    zone: us-central1-a
    machineType: https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/machineTypes/f1-micro
    disks:
    - deviceName: boot
      type: PERSISTENT
      boot: true
      autoDelete: true
      initializeParams:
        sourceImage: https://www.googleapis.com/compute/v1/projects/debian-cloud/global/images/debian-7-wheezy-v20150423
    networkInterfaces:
    - network: https://www.googleapis.com/compute/v1/projects/myproject/global/networks/default
      accessConfigs:
      - name: External NAT
        type: ONE_TO_ONE_NAT

模板

配置可以包含模板,模板在本质上是由配置文件的部分总结而来的一个个构成部分。创建模板后,您可以根据需要在多个部署中重复使用这些模板。 同样,如果您发现自己一直在重写有非常相似的属性的配置,则可以将共同部分总结为模板。模板比一个个单独的配置文件更为灵活,可支持在不同部署中轻松移植。

模板文件以 Python 或 Jinja2 编写。Deployment Manager 系统以递归方式解读每个模板,并将结果内嵌至配置文件。因此,每个模板的解读最终必将导致资源的 YAML 语法与上述为配置文件本身定义的语法相同。

要创建简单模板,请阅读创建基本模板

配置可描述为完全展开或未展开。完全展开的配置描述部署的所有资源和属性,包括导入模板文件中的任何内容。例如,使用模板的未展开配置可能如下所示:

imports:
- path: vm_template.jinja

resources:
- name: vm-instance
  type: vm_template.jinja
  properties:
    zone: us-central1-a
    project: myproject

展开后,配置文件将包含您的所有模板的内容,如下所示:

resources:
- name: the-first-vm
  type: compute.v1.instance
  properties:
    zone: us-central1-a
    machineType: https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/machineTypes/f1-micro
    disks:
    - deviceName: boot
      type: PERSISTENT
      boot: true
      autoDelete: true
      initializeParams:
        sourceImage: https://www.googleapis.com/compute/v1/projects/debian-cloud/global/images/debian-7-wheezy-v20150423
        networkInterfaces:
        - network: https://www.googleapis.com/compute/v1/projects/myproject/global/networks/default
    accessConfigs:
    - name: External NAT
      type: ONE_TO_ONE_NAT

资源

一项资源表示单个 API 资源,可以是 Google 托管的基本类型提供的 API 资源,也可以是由类型提供程序提供的 API 资源。 例如,一个 Compute Engine 实例为单个资源,一个 Cloud SQL 实例为单个资源等等。

要指定资源,您要提供该资源的类型。请参阅下文的“类型”部分,详细了解类型。

类型

要在 Deployment Manager 中创建资源,必须指定 type。类型可以表示作为部署的一部分创建的单个 API 资源(称为基本类型)或一组资源(称为复合类型)。

例如,要创建一个 Compute Engine 虚拟机实例,请在配置中指定相应的基本类型:

resources:
- name: the-first-vm
  type: compute.v1.instance # The type of resource to deploy
  ...

Deployment Manager 提供了 Google 维护的基本类型列表,可供您直接使用。您可在支持的资源类型和属性文档中找到这些类型的列表。

基本类型和类型提供程序

基本类型创建单个初始资源。例如,Google 拥有的基本类型包括 compute.v1.instancestorage.v1.bucketsqladmin.v1beta4.database,所有这些类型均由各自的 Compute Engine V1 API、Cloud Storage V1 API 和 Cloud SQL v1beta4 Admin API 提供。

基本类型由支持创建、读取、升级和删除 (CRUD) 操作的 RESTful API 提供支持。如果仅使用 Google 拥有的类型无法满足您的需求,您还可以通过添加类型提供程序来创建其他基本类型。创建类型提供程序会将 API 的所有资源呈现为您可以使用的基本类型。要创建类型提供程序,您必须提供 API 描述符文档(该文档可以是 OpenAPI 规范Google Discovery),调整 API 的任何必要输入映射,并使用 Deployment Manager 注册类型。创建后,您和其他拥有您的项目访问权限的用户可以使用该提供程序提供的类型。

添加类型提供程序时,由 API 提供并由具有创建、读取、更新和删除 (CRUD) 操作的 RESTful 接口支持的所有资源会呈现为可在部署中使用的类型。

创建自己的类型提供程序是一种高级方案,仅当您非常熟悉要集成的 API 时,Google 才建议您这样做。

如需了解如何创建类型提供程序,请参阅与 Deployment Manager 集成

在模板或配置中调用基本类型时,您可以根据类型使用以下任一语法。

  • 对于 Google 托管的基本类型,请使用:

    type: [API].[VERSION].[RESOURCE]
    

    例如 compute.v1.instance

  • 对于 Google 托管的类型提供程序(Beta 版),请使用:

    type: gcp-types/[PROVIDER]:[RESOURCE]
    

    如需查看支持的类型提供程序的列表,请参阅支持的 GCP 类型提供程序

  • 对于类型提供程序提供的基本类型,请使用:

    type: [PROJECT_ID]/[TYPE_PROVIDER]:[COLLECTION]
    

    其中 [COLLECTION] 是指向要部署的 API 资源的路径。

复合类型

复合类型包含一个或多个经过预配置以搭配使用的模板。在部署中部署时,这些模板会展开为一组基本类型。复合类型本质上是可以添加到 Deployment Manager 的托管模板。您可以为常用解决方案创建复合类型,以便轻松重用解决方案,或创建将来可以重复使用的复杂设置。

例如,您可以创建一个可部署网络负载平衡的托管实例组的复合类型。网络负载平衡器需要多项 Google Cloud Platform 资源以及在资源之间进行配置,因此您可以在一个配置中一次性设置这些资源,并使用 Deployment Manager 注册类型。之后,您和其他具有项目访问权限的用户可以调用该类型并在未来配置中进行部署。

要在配置中调用复合类型,请使用:

type: [PROJECT_ID]/composite:[TYPE_NAME]

例如:

resources:
- name: my-composite-type
  type: myproject/composite:example-composite-type

如需了解如何创建复合类型,请阅读向 Deployment Manager 添加复合类型

清单

清单是包含您提供的原始配置的只读对象,包括任何导入的模板,还包括由 Deployment Manager 创建的完全展开的资源列表。每次更新部署时,Deployment Manager 都会生成一个新的清单文件,以反映部署的新状态。排查部署的问题时,查看清单十分有用。

如需了解详情,请参阅查看清单

部署

部署是利用一个配置一起部署和管理的资源集合。

如需了解详情,请参阅创建部署

后续步骤