认证、授权
用户: 用于master对framework和slave的认证
角色:
- 将framework分类
在框架注册时,必须指定框架注册的角色信息,在资源分配是作为框架的属性进行影响分配结果 - 将用户分类
用于定义某(些)用户对框架的操作信息, 比如注册、下线等 - 将资源分类
在slave上配置, 用于指定资源只能由某角色使用
操作: 主要用于限制framework的注册(register_frameworks),运行(run_tasks),下线(shutdown_frameworks)三种操作对应
框架名称: 在框架向master注册时设置其名称
任务执行用户: 在slave上执行任务的系统用户
使用:
master启动:
mesos-master --ip=192.168.56.101 --zk=zk://localhost:2181/mesos --quorum=1 --work_dir=/var/lib/mesos --log_dir=/var/log/mesos --hostname=192.168.56.101 --cluster=mesos --authenticate=true --authenticate_slaves=true --authenticators=crammd5 --credentials=/root/run/credentials --roles=marathon_role,chronos_role --acls=/root/run/acls.json
参数说明:
--authenticators=crammd5
设置认证方式-
--credentials=/root/run/credentials
设置用户名密码
文件内容:user1 password1 user2 password2 marathon_user marathon_password chronos_user chronos_password framework_user framework_password
每行对应一个用户名和密码信息
--authenticate=true
设置在framewrok注册时对用户进行认证--authenticate_slaves=true
设置在slave注册时对用户进行认证--roles=marathon_role,chronos_role
设置角色列表--acls=/root/run/acls.json
设置访问权限
文件内容:
{
"permissive" : false,
"register_frameworks" : [
{
"principals" : {
"values" : ["marathon_user"]
},
"roles" : {
"values" : ["marathon_role"]
}
},
{
"principals" : {
"values" : ["chronos_user"]
},
"roles" : {
"values" : ["chronos_role"]
}
}
],
"run_tasks" : [
{
"principals" : {
"values" : ["marathon_user", "chronos_user"]
},
"users" : {
"values" : ["root"]
}
}
],
"shutdown_frameworks" : [
{
"principals": {
"values": ["framework_user"]
},
"framework_principals": {
"type": "ANY"
}
}
]
}
解释:
- 框架只能由用户marathon_user以marathon_role角色或用户chronos_user以chronos_role角色像master发起注册
- 框架只能使用户只能使用marathon_user和chronos_user且以root系统用户运行任务
- 只允许framework_user通过restapi关闭所有的框架下线
- 在json配置中有value有两种设置可以是values或者type,values对应具体的用户名、角色、框架名称、系统用户。type对应范式匹配可设置为NONE或ANY,分别表示没有任何值和所有值
slave启动
mesos-slave --ip=192.168.56.102 --hostname=192.168.56.102 --master=zk://192.168.56.101:2181/mesos --containerizers=docker,mesos --log_dir=/var/log/mesos --work_dir=/var/lib/mesos --authenticatee=crammd5 --credential=credential
参数说明:
- --authenticatee=crammd5
设置认证方式 - --credential=credential
设置用户名密码信息
文件内容:user2 password2
框架启动需要指定参数(以marathon, chronos为例):
marathon:
./start --master zk://localhost:2181/mesos --zk zk://localhost:2181/marathon --hostname 192.168.56.101 --framework_name marathon --mesos_user root --mesos_role marathon_role --mesos_authentication_principal marathon_user --mesos_authentication_secret_file /root/marathon-0.10.0/bin/mesos_secret
- --framework_name marathon
设置框架名称 - --mesos_user root
设置框架创建任务在slave上运行的系统用户 - --mesos_role marathon_role
设置框架的角色 - --mesos_authentication_principal marathon_user
设置框架的认证用户名 - --mesos_authentication_secret_file /root/marathon-0.10.0/bin/mesos_secret
设置框架的认证用户密码,需要注意文件中只能包含名称,不能包含换行字符和空格
chronos:
./start-chronos.bash --master zk://localhost:2181/mesos --zk_hosts zk://localhost:2181 --http_port 8081 --mesos_framework_name chronos --user root --mesos_role chronos_role --mesos_authentication_principal chronos_user --mesos_authentication_secret_file /root/chronos-2.4.0/bin/mesos_secret
- --mesos_framework_name chronos
设置框架名称 - --user root
设置框架创建的任务在slave上运行的系统用户 - --mesos_role chronos_role
设置框架角色 - --mesos_authentication_principal chronos_user
设置框架的认证用户名 - --mesos_authentication_secret_file /root/chronos-2.4.0/bin/mesos_secret
设置框架的认证密码,需要注意文件中只能包含名称,不能包含换行字符和空格
使用curl下线框架的示例
curl -XPOST "http://192.168.56.101:5050/master/teardown" --login-options AUTH=CRAM-MD5 --user "framework_user:framework_password" -d "frameworkId=20151019-154324-1698212032-5050-8277-0000" -v