包含 Terraform 配置的设计需要访问与 Automation Assembler 内部部署产品集成的 Terraform 运行时环境。

如何添加 Terraform 运行时

运行时环境包含一个 Kubernetes 集群,该集群通过运行 Terraform CLI 命令执行请求的操作。此外,运行时还会收集日志并返回 Terraform CLI 命令生成的结果。

VMware Aria Automation 内部部署产品需要用户配置自己的 Terraform 运行时 Kubernetes 集群。每个组织仅支持一个 Terraform 运行时。该组织的所有 Terraform 部署都使用同一个运行时。

注:

要运行 Terraform 命令和状态,您需要一个在 K8s 上运行的 Terraform 运行时环境。在内部部署 VMware Aria Automation 中创建 Terraform 集成时,可以选择受管 k8(即已由 VMware Aria Automation 管理的 k8s 集群)或外部 k8s 集群(即不由 VMware Aria Automation 管理的 k8s 集群)和将在其中创建 Terraform Pod 的命名空间。如果使用的是外部集群,则必须为 Terraform 运行时目标提供对 k8s 集群的 Kubeconfig 访问权限。Kubeconfig 是 k8s 标准,Kubeconfig 不需要是管理员 Kubeconfig。您可以使用具有最低权限的服务帐户,例如,在命名空间中运行 Pod 的权限,以及生成 Kubeconfig 以用于 VMware Aria Automation Terraform 运行时集成的权限。

  1. 验证您是否具有要在其上运行 Terraform CLI 的 Kubernetes 集群。
    • 所有用户均可提供 kubeconfig 文件,以在非受管 Kubernetes 集群上运行 Terraform CLI。
    • Enterprise 许可证用户可以选择在 VMware Aria Automation 管理的 Kubernetes 集群上运行 Terraform CLI。

      Automation Assembler 中,转到基础架构 > 资源 > Kubernetes,然后验证您是否具有 Kubernetes 集群。如果需要添加一个集群,请参见如何在 Automation Assembler 中使用 Kubernetes

  2. 如果新添加或修改了 Kubernetes 集群,请等待其数据收集完成。

    数据收集将检索命名空间列表和其他信息,并且可能需要长达 5 分钟的时间,具体取决于提供商。

  3. 数据收集完成后,请转到基础架构 > 连接 > 集成 > 添加集成,然后选择 Terraform 运行时卡视图。
  4. 输入设置。
    图 1. Terraform 运行时集成示例
    适用于 Advanced 许可证用户的 Terraform 运行时集成示例
    设置 说明
    名称 为运行时集成提供唯一的名称。
    说明 阐明集成的目标。
    Terraform 运行时集成:
    运行时类型(仅限 Enterprise) Enterprise 许可证用户可以选择是在 VMware Aria Automation 管理的 Kubernetes 集群上运行 Terraform CLI 还是在非受管集群上运行。
    Kubernetes kubeconfig(所有用户)

    对于非受管 Kubernetes 集群,请粘贴外部集群的 kubeconfig 文件的全部内容。

    要通过代理服务器使用外部 Kubernetes 运行时,请参见如何添加代理支持

    此选项适用于所有用户。

    Kubernetes 集群(仅限 Enterprise)

    对于 VMware Aria Automation 管理的 Kubernetes,请选择要在其中运行 Terraform CLI 的集群。

    集群及其 kubeconfig 文件必须可访问。可以在 /cmx/api/resources/k8s/clusters/{clusterId}/kube-config 上使用 GET 验证是否可以访问 kubeconfig。

    此选项仅适用于 Enterprise 许可证。

    Kubernetes 命名空间 选择要在集群中使用的命名空间,以便创建运行 Terraform CLI 的 Pod。
    运行时容器设置:
    映像 输入要运行的 Terraform 版本的容器映像的路径。
    注: “验证”按钮不会检查容器映像。
    CPU 请求 输入运行容器的 CPU 量。默认值为 250 个毫核。
    CPU 限制 输入运行容器允许的最大 CPU 量。默认值为 250 个毫核。
    内存请求 输入运行容器的内存量。默认值为 512 MB。
    内存限制 输入运行容器允许的最大内存量。默认值为 512 MB。
  5. 单击验证并根据需要调整设置。
  6. 单击添加

将缓存设置。添加集成后,可以修改集群或命名空间等设置,但可能需要长达 5 分钟的时间才能检测到更改,且 Terraform CLI 才能在新设置下运行。

Terraform 运行时故障排除

某些 Terraform 配置部署问题可能与运行时集成有关。

问题 原因 解决方案
验证失败,并显示错误,指出命名空间无效。 您修改了集群,但在 UI 中仍保留以前的命名空间。 始终在修改集群选择后重新选择命名空间。
“命名空间”下拉列表为空或不列出新添加的命名空间。 集群的数据收集尚未完成。输入或修改集群后,数据收集需要长达 5 分钟才能完成,输入或修改命名空间后,需要长达 10 分钟才能完成。 对于具有现有命名空间的新集群,请等待 5 分钟,以便数据收集完成。

对于现有集群中的新命名空间,请等待 10 分钟,以便数据收集完成。

如果问题仍然存在,请移除集群,然后在基础架构 > 资源 > Kubernetes 下重新添加集群。

Terraform CLI 容器在以前的集群、以前的命名空间或使用以前的运行时设置创建,即使更新集成帐户后也是如此。 VMware Aria Automation 使用的 Kubernetes API 客户端将缓存 5 分钟。 所做的更改可能需要长达 5 分钟的时间才会生效。
验证或 Terraform 部署操作失败,并显示错误,指出 kubeconfig 不可用。 有时,由于无法从 VMware Aria Automation 访问集群,会出现这些错误。

在其他一些情况下,用户凭据、令牌或证书无效也会导致出现这些错误。

导致出现 Kubeconfig 错误的可能原因有很多,可能需要技术支持介入才能进行故障排除。

如何添加代理支持

要通过代理服务器连接外部 Kubernetes 运行时集群,请执行以下步骤。

  1. 登录到外部 Kubernetes 集群服务器。
  2. 创建一个空文件夹。
  3. 在新文件夹中,将以下行添加到名为 Dockerfile 的新文件中。
    FROM projects.registry.vmware.com/vra/terraform:latest as final
    ENV https_proxy=protocol://username:password@proxy_host:proxy_port
    ENV http_proxy=protocol://username:password@proxy_host:proxy_port
    ENV no_proxy=.local,.localdomain,localhost
  4. 修改占位符值,以便 https_proxyhttp_proxy 环境变量包括用于访问 Internet 的代理服务器设置。

    protocol 将为 http 或 https,具体取决于代理服务器使用的协议,这可能与 https_proxyhttp_proxy 的环境变量名称不匹配。

  5. 保存并关闭 Dockerfile。
  6. 从空文件夹中,运行以下命令。根据您的帐户特权,您可能需要在 sudo 模式下运行该命令。

    docker build --file Dockerfile --tag custom-terraform-runtime:1.0 .

    该命令将创建本地 custom-terraform-runtime:1.0 Docker 映像。

  7. Automation Assembler 中的基础架构 > 连接 > 集成下,转到您的 Terraform 运行时集成。
  8. 创建或编辑运行时容器设置以使用 custom-terraform-runtime:1.0 映像:
    Terraform 运行时代理映像