Terraform dataproc 集群设置问题
Terraform dataproc cluster setup issues
我正在尝试通过 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
}
- 如何将 permissions/keys 分配给正在通过 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
是一个很好的举措,因为这使得集群无法从 public 互联网访问,但这也意味着 gcloud compute ssh
到单个节点将无法工作。
最后,任何有权与集群交互的用户都具有与服务帐户基本相同的权限。这篇文章解释了这一点
https://cloud.google.com/dataproc/docs/concepts/iam/dataproc-principals
我正在尝试通过 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
}
- 如何将 permissions/keys 分配给正在通过 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
是一个很好的举措,因为这使得集群无法从 public 互联网访问,但这也意味着 gcloud compute ssh
到单个节点将无法工作。
最后,任何有权与集群交互的用户都具有与服务帐户基本相同的权限。这篇文章解释了这一点 https://cloud.google.com/dataproc/docs/concepts/iam/dataproc-principals