Как преобразовать / перенести существующую инфраструктуру облачной платформы Google в Terraform или другой IaC

Лучший и самый простой способ создать копию dict в обоих Python 2.7 и 3 ...

Чтобы создать копию простого (одноуровневого ) словарь:

1. Используя метод dict (), вместо создания ссылки, которая указывает на существующий dict.

my_dict1 = dict()
my_dict1["message"] = "Hello Python"
print(my_dict1)  # {'message':'Hello Python'}

my_dict2 = dict(my_dict1)
print(my_dict2)  # {'message':'Hello Python'}

# Made changes in my_dict1 
my_dict1["name"] = "Emrit"
print(my_dict1)  # {'message':'Hello Python', 'name' : 'Emrit'}
print(my_dict2)  # {'message':'Hello Python'}

2. Использование встроенного метода update () для словаря python.

my_dict2 = dict()
my_dict2.update(my_dict1)
print(my_dict2)  # {'message':'Hello Python'}

# Made changes in my_dict1 
my_dict1["name"] = "Emrit"
print(my_dict1)  # {'message':'Hello Python', 'name' : 'Emrit'}
print(my_dict2)  # {'message':'Hello Python'}

Чтобы создать копию вложенного или сложного словаря:

Используйте встроенный модуль копирования, который обеспечивает общие операции мелкой и глубокой копии. Этот модуль присутствует как в Python 2.7, так и в 3. *

import copy

my_dict2 = copy.deepcopy(my_dict1)
0
задан Bryan Heden 16 January 2019 в 19:12
поделиться

1 ответ

Создать кластер Kubernetes с помощью terraform очень просто, потому что в конечном итоге сделать кластер Kubernetes в GKE просто, вы просто используете ресурсы google_container_cluster и google_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 import

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

Однако, в своем комментарии вы упомянули о желании преобразовать зональный кластер в региональный кластер. К сожалению, это невозможно в настоящее время

Вы решаете, является ли ваш кластер зональным или региональным при его создании. Вы не можете преобразовать существующий зональный кластер в региональный или наоборот.

Ваша лучшая ставка, на мой взгляд, заключается в следующем:

  • Создать региональный кластер с помощью terraform, дав кластеру новое имя
  • Сделайте резервную копию существующей зоны кластера, используя резервную копию etcd, или более сложную резервную копию, используя heptio-ark
  • Восстановите эту резервную копию в региональном кластере
0
ответ дан jaxxstorm 16 January 2019 в 19:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: