-
Notifications
You must be signed in to change notification settings - Fork 528
BIGTOP-3300. Add puppet manifests for hadoop-kms. #615
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
|
I manually tested that HDFS transparent encryption works on following config.yaml:: test steps:: |
|
also tested on kerberos enabled cluster on config.yaml:: with the following configs in bigtop-deploy/puppet/hieradata/bigtop/cluster.yaml:: test steps:: |
|
TODOs in follow-up JIRAs are
|
| #kerberos::krb_site::kdc_server: "%{hiera('bigtop::hadoop_head_node')}" | ||
| #kerberos::krb_site::kdc_port: "88" | ||
| #kerberos::krb_site::admin_port: "749" | ||
| #kerberos::krb_site::keytab_export_dir: "/var/lib/bigtop_keytabs" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
May I know why the name is changed to from site to krb_site? I think this may break compatibility.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The Hiera variables are not injected unless the name space of properties match the class name of Puppet classes. The relevant class name was changed from site to krb_site in 3386a9d. The commented out configs (as example) seem to be left unchanged.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
OK. That was me ;) Glad you catch this. Thanks!
| <% if @kms_host %> | ||
| <property> | ||
| <name>hadoop.security.key.provider.path</name> | ||
| <value>kms://http@<%= @kms_host %>:<%= @kms_port %>/kms</value> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm zero knowledge about this, just wondering can this be https?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes. We need additional configurations in files such as ssl-client.xml, ssl-server.xml and server.xml (of Tomcat) for that. I would like to address that in another JIRA since all services of HDFS and YARN should be cared when we enable HTTPS on Web-UI and REST API.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Sure. No problem and thanks for the explanation.
| default => [ ], | ||
| true => [ 'HTTP' ], | ||
| 'enabled' => [ 'HTTP' ], | ||
| default => [ ], |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The original code won't work hence you refactor here?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes. The credential of HTTP/host@REALM did not written to keytab file since boolean true was not covered in the conditional of previous code.
|
This is super awesome feature! I've left some comments. Thanks! |
|
Looks nice. +1. |
| <% if @hadoop_security_authentication == "kerberos" -%> | ||
| <property> | ||
| <name>hadoop.kms.authentication.kerberos.keytab</name> | ||
| <value>/etc/kms.keytab</value> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm not aware that there's a convention to put keytab under /etc, is it?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I used the keytab created by kerberos::host_keytab resource. Other modules using the host_keytab resource such as HDFS and YARN seem to follow this convention as I can see.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Got It. Pretty comprehensive. Thanks!
|
|
||
| <property> | ||
| <name>hadoop.kms.authentication.signer.secret.provider.zookeeper.kerberos.principal</name> | ||
| <value>kms/#HOSTNAME#</value> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is this intentional for replacement?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This part came from the original kms-site.xml bundled with Hadoop. The value is used only if the value of hadoop.kms.authentication.signer.secret.provider is changed to zookeeper. ZKSignerSecretProvider is a feature for HA setup by which multiple KMS instances share the same signer secret via ZooKeeper. Since KMS HA is not supported in this patch, it is left as is.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for the detailed explanation!
|
Thanks, @evans-ye. |
* BIGTOP-3300. Add puppet manifests for hadoop-kms. * fixed role assingment, kms kerberos configs and bugs in kerberos module. * tightened permission of kms-env.sh containing keystore password.
No description provided.