如何将现有的谷歌云平台基础设施转换/迁移到 terraform 或其他 IaC

布莱恩·海登

目前,我们将 kubernetes 集群 master 设置为 zonal,并要求它是区域性的。我的想法是将现有集群和所有工作负载/节点/资源转换为一些基础设施即代码——最好是 terraform(但可以像一组gcloud命令一样简单)。

我知道使用 GCP 我可以为我即将运行的命令生成原始命令行,但我不知道如何(或者我什至可以)将现有基础设施转换为相同的。

根据我的研究,似乎不太可能[以直接的方式]做我想做的事情。所以我正在寻找任何建议,即使只是阅读一些其他文档(对于我可能不熟悉的工具)。

TL;DR:我希望使用我现有的 Google Cloud Platform Kubernetes 集群并重建它,以便将位置类型从 zonal 更改为 master - 我实际上并不关心这是如何完成的。目前公认的最佳实践方法是什么?如果没有,那么这样做的快速而肮脏的方法是什么?

如果您需要我进一步说明,我会 - 我故意省略了与我所做的特定研究的链接。

贾克斯风暴

使用 terraform 创建 Kubernetes 集群非常简单,因为最终在 GKE 中创建 Kubernetes 集群非常简单,您只需使用google_container_clustergoogle_container_node_pool资源,如下所示:

resource "google_container_cluster" "primary" {
  name               = "${var.name}"
  region             = "${var.region}"
  project            = "${var.project_id}"
  min_master_version = "${var.version}"

  addons_config {
    kubernetes_dashboard {
      disabled = true
    }
  }

  maintenance_policy {
    daily_maintenance_window {
      start_time = "03:00"
    }
  }

  lifecycle {
    ignore_changes = ["node_pool"]
  }

  node_pool {
    name = "default-pool"
  }
}

resource "google_container_node_pool" "default" {
  name    = "default"
  project = "${var.project_id}"
  region  = "${var.region}"
  cluster = "${google_container_cluster.primary.name}"

  autoscaling {
    min_node_count = "${var.node_pool_min_size}"
    max_node_count = "${var.node_pool_max_size}"
  }

  management {
    auto_repair  = "${var.node_auto_repair}"
    auto_upgrade = "${var.node_auto_upgrade}"
  }

  lifecycle {
    ignore_changes = ["initial_node_count"]
  }

  node_config {
    machine_type = "${var.node_machine_type}"

    oauth_scopes = [
      "https://www.googleapis.com/auth/cloud-platform",
    ]
  }

  depends_on = ["google_container_cluster.primary"]
}

为了获得更全功能的体验,有像这样的terraform 模块

转换现有集群要困难得多。如果你想使用terraform import

terraform import google_container_cluster.mycluster us-east1-a/my-cluster

但是,在您的评论中,您提到想要将区域集群转换为区域集群。不幸的是,在这个时候不可能的

您在创建集群时决定是区域集群还是区域集群。您不能将现有地区集群转换为区域集群,反之亦然。

在我看来,您最好的选择是:

  • 使用 terraform 创建区域集群,为集群赋予新名称
  • 使用 etcd 备份或更复杂的备份使用heptio-ark备份您现有的区域集群
  • 将该备份恢复到您的区域集群

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

什么是基础架构即代码(IaC)的示例?

来自分类Dev

如何处理依赖于其他模块的Terraform模块

来自分类Dev

引用Terraform中的其他模块资源

来自分类Dev

Terraform(AzureRM)是否可以(如果有条件)拥有其他资源部署条件?

来自分类Dev

没有其他“如果”的“其他”

来自分类Dev

没有其他“如果”的“其他”

来自分类Dev

从其他项目Terraform导入ECS任务定义

来自分类Dev

用`for_each`创建的Terraform资源-在其他Terraform脚本中使用

来自分类Dev

MATE:如何显示其他现有的键盘布局?

来自分类Dev

Laravel寻找其他迁移

来自分类Dev

如何将Amazon EC2实例迁移到其他帐户

来自分类Dev

如何将视图移到其他项目?

来自分类Dev

如何将按钮焦点移到其他部分

来自分类Dev

有没有办法将谷歌云平台项目更改为其他 GCP 帐户?

来自分类Dev

如何将拥有的盒装结构引用给其他拥有的结构

来自分类Dev

如何生成其他项目?

来自分类Dev

如何从其他操作注销

来自分类Dev

如何显示其他布局?

来自分类Dev

如何从其他模型退货?

来自分类Dev

如何安装其他区域?

来自分类Dev

如何引用其他表

来自分类Dev

将Live PrasePlatform iOS / Android项目迁移到其他平台的推荐方法

来自分类Dev

将文本移到其他拆分

来自分类Dev

eGit将项目移到其他位置?

来自分类Dev

将PDF页面移到其他位置

来自分类Dev

将Azure存储帐户迁移到其他订阅

来自分类Dev

引用在其他文件夹中创建的Terraform资源

来自分类Dev

无法ping通其他使用Terraform创建的Google Compute VM

来自分类Dev

使现有的conda环境可用于其他项目