在没有kadmin.local命令的版本里面实现kadmin.local

  其他常见问题
内容纲要

概要描述


在TDH集群中,Kerberos是KRB5LDAP中的一部分,但Kerberos本身作为一个网络认证协议也有自己的一套管理系统。Kerberos数据库中存放了所有principal和密码/keytab信息,您可以通过kadmin或者kadmin.local命令行来进入Kerberos管理系统来管理其中的信息,比如添加和删除用户、修改用户密码,生成keytab文件等等。
在 TDH 5.x 版本中,Kerberos 有了页面化的操作方式(guardian-server),所以在TDH 5.x 之后 kadmin 和 kadmin.local 已经无法使用了。
但是在配置非 TDH 平台与 TDH平台的 Kerberos 互信时需要登录到 Kerberos 管理系统来添加 princpal,所以本文介绍一种在没有kadmin、kadmin.local 命令行工具的TDH 集群上如何登录 Kerberos 管理系统来管理其中的信息;
本案例环境:TDH 5.2.2、guardian-5.2.2

详细说明


虽然在 TDH 5.x 版本中,Kerberos 不在提供 kadmin 和 kadmin.local 命令行工具,但是原来的 kadmin 功能还在,您只需要在 guardian-apacheds 的 container 中准备一下 kadmin 和 kadmin.local 命令需要的 jar 包(jar 包在 hdfs 的 namenode 中的/usr/lib/guardian-utils/lib/下),以及调用 kadmin 功能的一个命令脚本即可。

  • kadmin 和 kadmin.local 功能jar包所在的路径:
    $ kubectl get pods -owide |grep namenode
    hadoop-hdfs-namenode-hdfs1-3303342286-68vxs                 2/2       Running   61         24d       172.22.22.2   tdh-02
    hadoop-hdfs-namenode-hdfs1-3303342286-6h57j                 2/2       Running   63         24d       172.22.22.1   tdh-01
    $ kubectl exec -ti hadoop-hdfs-namenode-hdfs1-3303342286-68vxs bash
    Defaulting container name to hadoop-hdfs-namenode-hdfs1.
    Use 'kubectl describe pod/hadoop-hdfs-namenode-hdfs1-3303342286-68vxs' to see all of the containers in this pod.
    $ cd /usr/lib/guardian-utils/lib/
    $ pwd
    /usr/lib/guardian-utils/lib
  • kadmin 功能命令脚本
    #!/usr/bin/env bash
    TRANSWARP_UTILS=/etc/default/transwarp-utils
    APACHEDS=/etc/guardian
    JAVA=java
    [ -e "$TRANSWARP_UTILS" ] && source ${TRANSWARP_UTILS}
    if [ x"$JAVA_HOME" != x"" ]; then
    JAVA=$JAVA_HOME/bin/java
    fi
    $JAVA -Dguardian.root.logger='INFO, RFA' -cp $APACHEDS/conf:/usr/lib/guardian/lib/* io.transwarp.guardian.utils.KadminShell "$@"

操作步骤

  1. 将 kadmin 和 kadmin.local 功能需要的 jar 包 cp至 guardian-apacheds 的 container 中
    -1. 将 hdfs 的 namenode 中的jar 包以及整个目录 cp至宿主机共享路径;
    -2. 然后将该 jar 包以及整个目录,scp 至 guardian-apacheds 所在的服务器;
    -3. 将 guardian-apacheds 上的 jar 包以及整个目录 cp 至 guardian-apacheds 的 container 共享路径;
  2. 编写并修改kadmin 功能的命令脚本
    -1. 进入 guardian-apacheds 的 container 中;
    -2. 编写 kadmin.local 脚本并修改脚本内容中的 apacheds conf 的路径为存放 jar 的路径;

准备所需 jar 包

  1. 将 hdfs 的 namenode 中的jar 包以及整个目录 cp至宿主机共享路径;
    $ cp -r /usr/lib/guardian-utils/lib/ /var/log/hdfs1/
  2. 然后将该 jar 包以及整个目录,scp 至 guardian-apacheds 所在的服务器;
  3. 将 guardian-apacheds 上的 jar 包以及整个目录 cp 至 guardian-apacheds 的 container 共享路径
    $ cp -r /var/log/hdfs1/lib/ /var/log/guardian/

编写 kadmin.local 脚本

进入 guardian-apacheds 的 container 中编写 kadmin.local 脚本;

$ kubectl get pods -owide|grep guardian-apacheds
guardian-apacheds-guardian-1512033472-4x9dl                 1/1       Running   3          6h        172.22.22.2   tdh-02
guardian-apacheds-guardian-1512033472-pwk41                 1/1       Running   0          6h        172.22.22.1   tdh-01
$ kubectl exec -ti guardian-apacheds-guardian-1512033472-4x9dl bash

编写 kadmin.local 脚本并修改脚本内容中的 apacheds conf 的路径为存放 jar 的路径;
需要将脚本最后一行的 $APACHEDS/conf:/usr/lib/guardian/lib/*修改成存放 jar 包的路径;
本案例修改为 $APACHEDS/conf:/var/log/guardian/lib/,并给该脚本文件赋予可执行权限chmod +x /bin/kadmin.local

$ vi /bin/kadmin.local
#!/usr/bin/env bash

TRANSWARP_UTILS=/etc/default/transwarp-utils
APACHEDS=/etc/guardian
JAVA=java

[ -e "$TRANSWARP_UTILS" ] && source ${TRANSWARP_UTILS}

if [ x"$JAVA_HOME" != x"" ]; then
    JAVA=$JAVA_HOME/bin/java
fi

$JAVA -Dguardian.root.logger='INFO, RFA' -cp $APACHEDS/conf:/var/log/guardian/lib/* io.transwarp.guardian.utils.KadminShell "$@"

$ chmod +x /bin/kadmin.local 

执行 kadmin.local 验证

kadmin.local -p uid=admin,ou=system -w $ds_pw -q "listprincs"
其中:

  • -p参数表示连接ApacheDS服务的用户,这里是固定写法,如果不指定默认是就是你安装Guardian时的admin用户;
  • -w参数($ds_pw)表示连接ApacheDS服务的密码(就是你安装Guardian时的OpenLDAP Manager密码,默认是admin,并非Guardian admin密码,查看方法:grep ‘^admin.pw’ /etc/guardian/conf/fortress.properties);
  • -q参数表示需要执行的操作,用引号引起来,具体支持哪些操作及其对应用法可以kadmin.local -h查看;
$ kadmin.local -w 123456 -q "listprincs"
admin@TDH
tdt/tdh-02@TDH
tdt/tdh-01@TDH
hive/tdh-01@TDH
kafka/tdh-01@TDH
zookeeper@TDH
hdfs@TDH
httpfs@TDH
hdfs/tdh-01@TDH
krbtgt/TDH@TDH
yarn@TDH
mapred@TDH

这篇文章对您有帮助吗?

平均评分 0 / 5. 次数: 0

尚无评价,您可以第一个评哦!

非常抱歉,这篇文章对您没有帮助.

烦请您告诉我们您的建议与意见,以便我们改进,谢谢您。