【问题标题】:Using Terraform to deploy Kubernetes apps使用 Terraform 部署 Kubernetes 应用程序
【发布时间】:2019-10-20 08:15:57
【问题描述】:

我知道使用 Terraform 部署您的 Infra 和 Kubernetes 集群是可行的方法。但是,使用 Terraform 在 Kubernetes 集群上部署应用程序是否有意义?这也是要走的路吗?

谢谢

【问题讨论】:

  • 看看helm.sh
  • 不确定是否有可能......
  • 我在使用 Helm provider 时遇到了一些运气,但总的来说我发现它有点尴尬,而且更多的 k8s-native 工具效果更好......YMMV

标签: kubernetes terraform


【解决方案1】:

虽然它并非没有复杂性,但更好的管道是 Jenkins + Helm + Spinnaker 组合。

  • Jenkins - CI
  • Helm - 模板和图表构建
  • 大三角帆 - 部署

优点:

  • Spinnaker 是部署到 kubernetis 的出色工具。

  • 它可以感知多个环境,因此云管道是 更容易构建。

  • 原生集成大多数云提供商,如 AWS、Azure、PCF 等

缺点:

  • 另一方面,它是一个有点重的工具,因为它由一个 一堆微服务和配置可能会让您难以理解。

【讨论】:

    【解决方案2】:

    正如David Maze 提到的,您可以将 terraform 与 helm 结合使用。 您可以找到更多关于 terraform 提供商 here 的信息 和here 根据 terraform 文档

    "install_tiller" -(可选)如果尚未安装 Tiller,请安装它。默认为真。 您也可以将 ansible 与 helm 包管理器 here 一起使用:

    请查看herehere 中介绍的其他自动化工具。就像Shirine 提到的詹金斯一样。

    请查看here 中描述的其他自动化工具,例如 jenkins 提到再见 @Shirine

    有不同的解决方案。根据您的需求,您应该考虑以下因素:针对开发人员/团队的付费/免费解决方案、首选平台、安全性、提高透明度、协作和可用性等其他因素。

    希望有帮助

    【讨论】:

      【解决方案3】:

      我维护 Kustomization provider 作为 Kubernetes 清单与 Terraform 的替代集成。

      与其他选项相比,它具有三个主要优势:

      1. 每个 K8s 资源都在 Terraform 状态下单独跟踪。这使您可以预览计划阶段的更改。并且还可以在不可变字段发生更改时启用销毁并重新创建计划。
      2. 提供程序允许您不加改变地使用原生 Kubernetes YAML。无需像 Kubernetes 提供程序那样将所有内容都转换为 HCL。
      3. 基于 Kustomize,它允许您使用 Kustomize 的叠加方法。但是通过在 Terraform 中定义覆盖,您可以使用 Terraform 变量、模块输出等来修补 Kubernetes 资源。

      你当然可以直接使用提供者的数据源和资源,但最方便的方法可能是通过这个模块:

      module "example_manifests" {
        source  = "kbst.xyz/catalog/custom-manifests/kustomization"
        version = "0.1.0"
      
        configuration_base_key = "default"
        configuration = {
          default = {
            resources = [
              # list of paths to K8s YAML files
              "${path.root}/path/to/a/kubernetes/resource.yaml"
            ]
          }
        }
      }
      

      【讨论】:

        猜你喜欢
        • 2018-08-17
        • 2016-09-14
        • 2018-11-20
        • 2021-08-29
        • 2021-10-01
        • 2021-04-01
        • 2015-09-16
        • 1970-01-01
        • 2016-09-06
        相关资源
        最近更新 更多