google-cloud-dataproc - Terraform dataproc 集群设置问题
问题描述
我正在尝试通过 terraform 在 GCP 中启动一个私有数据处理集群(1m,2w)。它还应该需要可选组件,例如 docker、anaconda 和 jupyter。以下是我的担忧,
- 我正在尝试在 software_config 下添加 image_version 和 optional_components,如下所示,这可行吗?
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
}
- 如何将权限/密钥分配给通过 terraform 启动的节点。因此用户可以在配置后使用它访问节点。我尝试如下使用,
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或2应该没问题。可能发生的情况是 Dataproc 的 Terraform 提供程序与 API 不同步,因此请按照错误提示提交错误。
对于 3,这里有点混乱 - 让我试着澄清一下。当您授予用户 IAM 绑定时,用户将有权访问资源(集群)。这与您如何创建集群无关。或Editor
或Dataproc Editor
自定义角色将允许他们与集群交互。
这是一个很好的设置internal_ip_only
,因为这使得集群无法从公共互联网访问,但这也意味着gcloud compute ssh
单个节点将无法工作。
最后,任何有权与集群交互的用户都具有与服务帐户基本相同的权限。本文对此进行了解释 https://cloud.google.com/dataproc/docs/concepts/iam/dataproc-principals
推荐阅读
- jquery - React 和 TypeScript - 如何在不包装父 div 的情况下进行渲染?
- c# - Xamarin 表单和 Android 蓝牙
- javascript - JS - 将单个电子邮件验证模式转换为多个电子邮件验证模式。
- node.js - Semantic-ui 试图运行 gulp build 但没有安装它的依赖项
- reactjs - React Native - 使用 Redux 将项目添加到 FlatList
- drupal - RuntimeException:NumberFormatter 需要 bcmath 扩展
- ios - 使用 TestFairy.begin() 时在 Xcode 9 中使用未解决的标识符“TestFairy”错误
- tomcat - 使用 dbcp2 和 ojdbc6 Oracle 驱动程序与 Tomcat 8 的连接泄漏
- entity-framework - 实体框架 - 主菜的最后一个 ID
- java - 字母顺序不适用于自定义 ListView