【问题标题】:What is the best practice to organize the main.tf with multiple application directories?用多个应用程序目录组织 main.tf 的最佳做法是什么?
【发布时间】:2021-11-06 19:52:11
【问题描述】:

我有 3 个应用程序位于不同的目录中,由 kubernetes 清单文件处理。

我想使用 terraform 将所有应用程序部署在不同的目录中。

应用程序的结构如下所示。

app-1
  L kubernetes_manifest
    L deployment.yaml. ## use Dockerfile to run the app 
  L app
    L app.py
  Dockerfile. ## wrap the app
app-2
  L kubernetes_manifest
    L deployment.yaml. ## use Dockerfile to run the app 
  L app
    L app.py
  Dockerfile. ## wrap the app
app-3
  L kubernetes_manifest
    L deployment.yaml. ## use Dockerfile to run the app 
  L app
    L app.py
  Dockerfile. ## wrap the app
app_terraform
   L main.tf

main.tf

resource "google_container_cluster" "test_cluster" {
  project = "test"
  name     = "test-cluster"
  initial_node_count       = 1
}

有没有办法部署main.tf中的所有应用程序?

【问题讨论】:

  • 应用源码和k8s manifests在git或其他scm/vcs中是如何组织的?
  • 我不会在同一个仓库中拥有集群管理和应用程序——它们以不同的速度和不同的意图发生变化。虽然,有可能拥有它。
  • @MattSchuchard 我将app.py 之类的源代码包装在一个Dockerfile 中,并使用该dockerfile 作为deployment.yaml 中的容器来运行。我在每个应用程序的根目录下使用 GIT。

标签: kubernetes terraform terraform-provider-gcp


【解决方案1】:

我维护Kustomization Provider,它允许您在 Terraform 中使用本机 Kubernetes YAML。

您可以直接使用提供程序,也可以使用我另外提供的便利模块。我将两者都作为我的Terraform framework for AKS, EKS and GKE 的一部分来维护。

模块方法可能更方便,因为您可以简单地为每个应用调用一次模块,并在可维护的代码和应用之间没有不必要的耦合之间取得良好的平衡。该模块还可以处理 ids_prio approach,这对于大量 K8s 资源来说更加健壮,开箱即用。

选项 1:提供者

app-1.tf:

data "kustomization_overlay" "app_1" {
  resources = [
    "${path.root}/app-1/kubernetes_manifest/deployment.yaml"
  ]
}

resource "kustomization_resource" "test" {
  for_each = data.kustomization_build.app_1.ids

  manifest = data.kustomization_build.app_1.manifests[each.value]
}

选项 2:模块

app-1.tf:

module "app_1" {
  source  = "kbst.xyz/catalog/custom-manifests/kustomization"
  version = "0.1.0"

  configuration_base_key = "default"
  configuration = {
    default = {
      resources = [
        "${path.root}/app-1/kubernetes_manifest/deployment.yaml"
      ]
    }
  }
}

【讨论】:

  • 谢谢!这对我来说是一个很好的尝试。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-12-11
  • 1970-01-01
  • 2011-07-07
  • 1970-01-01
  • 2019-04-20
  • 1970-01-01
  • 2018-03-10
相关资源
最近更新 更多