IBM Cloud Docs
定制 IBM Cloud 可部署架构,构建自己的基础设施

定制 IBM Cloud 可部署架构,构建自己的基础设施

本教程将指导您在现有 IBM Cloud® 可部署架构的基础上创建定制的可部署架构,以满足您的业务需求。 完成本教程后,您将学会如何下载 Terraform 文件、更新变量,然后测试更新后的架构。

从 IBM Cloud 可部署架构开始,您无需担心从头开始创建基础设施架构。 您可以使用 IBM Cloud 可部署体系结构并对其进行配置以满足您的特定需求,从而获得快速启动。

想象一下,你是 Example Corp (一家虚构公司)的云计算自动化工程专业人员。 您的基础架构架构师浏览了 IBM Cloud 目录并发现了 Code Engine 的云自动化,这是一种可满足您的大部分要求的可部署架构。 但是,基础架构架构师需要您做出以下更改,以满足您的业务需求:

  • 删除不需要的变量。
  • 将 IBM Cloud 区域限制为美国部署区域。
  • 更新可部署架构,以参考 Example Corp 的人工智能应用程序。

本教程使用虚构方案来帮助您学习和了解可部署体系结构的一些配置选项。 它说明了如何定制可部署架构,以便在 IBM Cloud Code Engine 上自动部署容器化应用程序。 icr.io/codeengine/helloworld 上的现有容器镜像被用作示例应用程序。 在完成本教程的过程中,请根据贵组织的需求调整每个步骤。

准备工作

  1. 要构建架构,必须熟悉 Terraform

  2. 通过转至 IBM Cloud 控制台中的 管理 > 帐户 > 帐户设置,验证您是否正在使用现收现付帐户或预订帐户。

  3. 创建一个资源库来存储可部署的架构。 对于本教程,将使用 GitHub。 有关更多信息,请参阅 创建存储库

  4. 例如,安装您选择的编辑器、Visual Studio Code.

  5. 验证是否为您分配了以下 IBM Cloud Identity and Access Management (IAM) 角色:

    • 所有 IAM 账户管理服务、所有账户管理服务以及所有身份和访问启用服务的管理员。
    • 目录管理服务的编辑器。
    • Schematics 的管理器服务访问角色。
    • 可部署架构中特定资源所需的其他角色。 Code Engine 的云自动化需要 Writer 服务访问角色,该角色可访问 Code Engine 服务的所有资源。

    更多信息,请参阅 分配账户管理服务访问权限管理资源访问权限

下载可部署体系结构文件

首先,您需要下载可部署的体系结构文件。 这些文件包括一个 main.tf 文件,用于调用 Terraform 根模块。

  1. 在 IBM Cloud 控制台中,单击目录

  2. 在搜索栏中输入 Cloud automation for Code Engine,然后从搜索结果列表中选择建筑。

  3. 选择 v4.2.2 作为产品版本。

    本教程基于 4.2.2 版本的云自动化创建,适用于 Code Engine。 不过,如果需要,您也可以选择其他版本的可部署架构。

  4. 确保选择了新 Code Engine 应用程序变体。

  5. 从摘要面板中单击 复审部署选项

  6. 选择 使用代码 > 下载捆绑软件 以下载捆绑软件。

  7. 在本地计算机上打开下载的捆绑软件。

  8. 解压缩 .tar.gz 捆绑包,以访问和编辑文件夹内的文件。 将提取的文件夹重命名为 Example-corp-infrastructure,以便查找和使用。

    成功下载并解压缩捆绑软件后,您将看到以下文件和文件夹:

    • automation folder
    • ibm_catalog.json
    • main.tf
    • outputs.tf
    • provider.tf
    • README.md
    • variables.tf
    • version.tf

编辑变量列表

当您的基础设施架构师研究 IBM Cloud Code Engine 时,他们决定修改区域和 IBM Cloud API 密钥。 架构中包含的其他变量并非您所需,因此您需要使用自己喜欢的编辑器 Visual Studio Code 删除它们。

  1. 在 Visual Studio Code中,打开 variables.tf 文件。

  2. 将以下变量移至 variables.tf 文件的开头。

    • ibmcloud_api_key
    • prefix
    • existing_resource_group_name
    • region

    变量的顺序并不重要。

  3. 删除所有其他变量并保存文件。

更新 main.tf 文件

现在,您已更新 variables.tf 文件,请确保 main.tf 文件中的配置信息正确。 由于要使用 Code Engine 运行 Example Corp 创建的应用程序,因此需要提供有关应用程序的信息。

  1. 打开 main.tf 文件。

  2. 更新 app_name 变量,输入 "example-corp-ai-app" 作为应用程序名称。

  3. 更新 image_reference 变量,输入 "icr.io/codeengine/helloworld",这是应用程序的 docker 镜像。

  4. 添加 project_name 变量,并输入 "example-corp-ce-project" 作为 Code Engine 项目的名称。

  5. 添加 provider_visibility 变量并将其设置为 "public"

  6. 确认已包含 ibmcloud_api_keyprefixregion 变量,如下例所示:

    module "deploy-arch-ibm-code-engine" {
      source      = "https://cm.globalcatalog.cloud.ibm.com/api/v1-beta/offering/source/archive//solutions/apps?archive=tgz&catalogID=7a4d68b4-cf8b-40cd-a3d1-f49aff526eb3&flavor=apps&installType=fullstack&kind=terraform&name=deploy-arch-ibm-code-engine&version=v4.2.2"
      ibmcloud_api_key      = var.ibmcloud_api_key
      prefix      = var.prefix
      existing_resource_group_name      = var.existing_resource_group_name
      region      = var.region
      app_name      = "example-corp-ai-app"
      image_reference      = "icr.io/codeengine/helloworld"
      project_name      = "example-corp-ce-project"
      provider_visibility      = "public"
    }
    
  7. 保存文件。

现在,您的架构已被硬编码为引用 Example Corp AI 应用程序,并配置为使用 IBM Cloud API 密钥、前缀和地区变量。

更新 ibm_catalog.json 文件

ibm_catalog.json 文件是一个清单 JSON 文件,用于在将可部署架构加入私有目录时自动导入版本信息。 因为你改变了可部署架构,所以你创建了一个全新的架构来满足你的需求。 更新 ibm_catalog.json 文件中的以下信息以反映您的更改。

有关清单文件及其包含的内容的更多信息,请参阅 本地编辑目录清单

更新产品信息

现在,您更新了配置并创建了自己的架构,还必须更新可部署架构的名称和编程名称。

  1. 打开 ibm_catalog.json 文件。

  2. 找到 label 字段,并将可部署体系结构的名称更新为 Example Corp's infrastructure

  3. 找到 name 字段,并将体系结构的程序化名称更新为 deploy-arch-example-corp

  4. 找到 version 字段并输入 0.0.1 以更新版本号。 如果缺少该字段,可将其添加到 name 字段之后的新行中,例如:

    			"label": "Example Corp's infrastructure",
    			"name": "deploy-arch-example-corp",
    			"version": "0.0.1",
    
  5. flavors 部分中,找到 label 字段,并将此可部署架构变体的名称更新为 Deploy Example Corp AI app on IBM Cloud Code Engine。 通过这样做,您可以确定可部署架构的这种变化的目的以及它能实现什么。

  6. 保存文件。

更新配置信息

现在,您要确保可部署架构的用户只能在美国地区进行部署。 要执行此操作,请更新 ibm_catalog.json 文件的配置部分中的变量信息。

  1. ibm_catalog.json 文件的 configuration 部分,找到以下变量并将它们移到配置部分的开头:

    • ibmcloud_api_key
    • prefix
    • existing_resource_group_name
    • region
  2. 要将地区限制为美国地区,必须将每个地区添加为 region 变量的选项,删除不需要的部分,并将 region 设置为必填变量。

    {
        "key": "region",
        "type": "string",
        "default_value": "us-south",
        "description": "The region in which to provision all resources created by this solution.",
        "required": true,
        "options": [
            {
                "displayname": "us-east",
                "value": "us-east"
            },
            {
                "displayname": "us-south",
                "value": "us-south"
    
            }
        ],
        "virtual": false
    }
    
  3. 删除配置部分中的其余变量。

    用户部署体系结构时,可以在列出的区域选项之间进行选择。 有关可用区域的列表,请参阅区域

  4. 保存 ibm_catalog.json 文件。

测试可部署体系结构

在将配置好的可部署架构加入私有目录并投入使用之前,请对配置进行测试,以确保架构按预期运行。 要使用 Terraform 命令行测试体系结构,请完成以下步骤:

  1. 从 IBM Cloud 创建或更新使用 Terraform 模块所需的 .netrc 文件。 有关更多信息,请参阅 ibmcloud catalog 实用程序 netrc

    ibmcloud catalog utility netrc
    
  2. 初始化 Terraform CLI。 有关更多信息,请参阅 初始化工作目录

    terraform init
    
  3. 供应资源。 有关更多信息,请参阅 使用 Terraform 供应基础架构

    1. 运行 terraform plan 以生成 Terraform 执行计划来预览建议的操作。

      terraform plan
      
    2. 运行 terraform apply 以创建计划中定义的资源。

      terraform apply
      

后续步骤

如果您的可部署架构按预期运行,那么您就成功地从 Code Engine 的云自动化中创建了自己的可部署架构。 现在,您已准备好将更新后的文件移至您创建的 GitHub 存储库,并 将产品加载到专用目录中

Example Corp's infrastructure 加入私有目录后,就可以 与企业共享。 如果你还没准备好分享你的可部署架构,或者你不是企业的一部分,你可以跳过分享,继续下一个教程,使用项目部署 Example Corp's infrastructure