Проблемы с установкой кластера Terraform datapro c - PullRequest
2 голосов
/ 06 марта 2020

Я пытаюсь раскрутить частный кластер данных c (1m, 2w) в GCP через terraform. Также должны потребоваться дополнительные компоненты, такие как docker, anaconda и jupyter. Ниже приведены мои проблемы:

  1. Я пытаюсь добавить image_version и option_components в software_config, как показано ниже, Это выполнимо?
    software_config {

      image_version = "1.4.21-debian9"
      override_properties = {
        "dataproc:dataproc.allow.zero.workers"          = "true"
      }
      optional_components = [ "DOCKER", "ANACONDA", "JUPYTER" ]
    }       
Если вышеупомянутое не выполнимо, использование initialize_actions - мой единственный вариант, как показано ниже?
    initialization_action {
      script      = "gs://dataproc-initialization-actions/conda/install-conda-env.sh"
      timeout_sec = 500
      }
Как назначить разрешения / ключи для узлов, которые раскручиваются через терраформ. таким образом, пользователи могут получить доступ к узлам, когда он будет подготовлен. Я попытался использовать, как показано ниже,
    gce_cluster_config {
      tags    = ["env", "test"]
      network = "${google_compute_network.dp-network.name}"
      internal_ip_only = true
      service_account = "name@name.iam.gserviceaccount.com"
    }

Оцените ваши входные данные,

Спасибо!

Обновление: я могу раскрутить кластер без опциональных компонентов указано в software_config. Но если я это сделаю, то это приведет к ошибке с сообщением об ошибке.

gce_cluster_config {
      network               = "${google_compute_network.dataproc-network.name}"
      internal_ip_only      = true
      tags                  = ["env", "staging"]
      zone                  = "${var.zone}"
      service_account       = "${var.service_account}"
      service_account_scopes= [
        "https://www.googleapis.com/auth/monitoring",
        "useraccounts-ro",
        "storage-rw",
        "logging-write",
      ]
    }

    # We can define multiple initialization_action blocks    
    initialization_action {
      script      = "gs://dataproc-initialization-actions/stackdriver/stackdriver.sh"
      timeout_sec = 500
    }
    initialization_action {
      script      = "gs://dataproc-initialization-actions/jupyter/jupyter.sh"
      timeout_sec = 500 
    }

1 Ответ

0 голосов
/ 06 марта 2020

Либо 1, либо 2 должно быть в порядке. Вероятно, происходит то, что провайдер Terraform для Datapro c не согласован с c с API, поэтому, пожалуйста, сообщите об ошибке, как указано в ошибке.

Для 3 здесь есть некоторая путаница - позвольте мне попытаться прояснить это. Пользователи будут иметь доступ к ресурсам (кластерам), когда вы предоставите им привязки IAM. Это не имеет ничего общего с тем, как вы создаете кластер. Либо Editor или Dataproc Editor, либо пользовательская роль позволит им взаимодействовать с кластерами.

Это хороший шаг для установки internal_ip_only, поскольку это делает кластер недоступным из publi c inte rnet но это также означает, что gcloud compute ssh для отдельных узлов не будет работать.

Наконец, любой пользователь, у которого есть разрешение на взаимодействие с кластером, имеет по существу те же разрешения, что и учетная запись службы. Эта статья объясняет это https://cloud.google.com/dataproc/docs/concepts/iam/dataproc-principals

...