首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将现有谷歌云平台基础设施转换/迁移到terraform或其他IaC

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

Stack Overflow用户
提问于 2019-01-16 19:12:36
回答 2查看 861关注 0票数 1

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

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

根据我的研究,我不太可能以一种直截了当的方式去做我想做的事情。因此,我正在寻找任何建议,即使只是阅读一些其他文档(对于一个我可能不熟悉的工具)。

TL;DR:我正在寻找我现有的Google平台Kubernetes集群,并重新构建它,以便将位置类型从zonal更改为master --我并不在乎这是如何完成的。目前公认的最佳实践方法是什么?如果没有这样的方法,那么快速和肮脏的方法是什么?

如果你要求我进一步说明,我会-我故意忽略了链接到我做过的具体研究。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-01-16 20:45:16

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

代码语言:javascript
复制
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

代码语言:javascript
复制
terraform import google_container_cluster.mycluster us-east1-a/my-cluster

但是,在您的评论中,您提到希望将区域集群转换为区域集群。不幸的是,此时的那不可能

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

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

  • 使用terraform创建区域集群,为集群提供一个新的名称。
  • 使用etcd备份或使用七方舟进行更复杂的备份,备份现有的分区集群。
  • 将备份还原到区域集群。
票数 2
EN

Stack Overflow用户

发布于 2021-04-14 08:15:37

我想要做到这一点:将现有的云基础设施作为代码(IaC)带到基础设施中,即将其放入*.tf文件中。

基本上,我找到并考虑了两种选择:

  1. terraform import (文档) 由于下面的限制,terraform import没有完全实现我想要的目标,因为它需要手动创建资源。 Terraform导入的当前实现只能将资源导入状态。它不生成配置。未来版本的Terraform也将生成配置。 因此,在运行terraform导入之前,必须手动为资源编写资源配置块,将导入的对象映射到该资源。
  2. 地形形成器(GitHub回购) 一个基于现有基础设施(反向Terraform)生成tf/json和tfstate文件的CLI工具。

该工具与提供者无关,并以terraform形式遵循流程,即planimport。它能够导入整个工作区的特定资源,并将其转换为*.tf文件。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54223797

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档