認(rèn)證际邻、授權(quán)
用戶: 用于master對(duì)framework和slave的認(rèn)證
角色:
- 將framework分類
在框架注冊(cè)時(shí),必須指定框架注冊(cè)的角色信息芍阎,在資源分配是作為框架的屬性進(jìn)行影響分配結(jié)果 - 將用戶分類
用于定義某(些)用戶對(duì)框架的操作信息, 比如注冊(cè)世曾、下線等 - 將資源分類
在slave上配置, 用于指定資源只能由某角色使用
操作: 主要用于限制framework的注冊(cè)(register_frameworks),運(yùn)行(run_tasks)谴咸,下線(shutdown_frameworks)三種操作對(duì)應(yīng)
框架名稱: 在框架向master注冊(cè)時(shí)設(shè)置其名稱
任務(wù)執(zhí)行用戶: 在slave上執(zhí)行任務(wù)的系統(tǒng)用戶
使用:
master啟動(dòng):
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
參數(shù)說(shuō)明:
--authenticators=crammd5
設(shè)置認(rèn)證方式-
--credentials=/root/run/credentials
設(shè)置用戶名密碼
文件內(nèi)容:user1 password1 user2 password2 marathon_user marathon_password chronos_user chronos_password framework_user framework_password
每行對(duì)應(yīng)一個(gè)用戶名和密碼信息
--authenticate=true
設(shè)置在framewrok注冊(cè)時(shí)對(duì)用戶進(jìn)行認(rèn)證--authenticate_slaves=true
設(shè)置在slave注冊(cè)時(shí)對(duì)用戶進(jìn)行認(rèn)證--roles=marathon_role,chronos_role
設(shè)置角色列表--acls=/root/run/acls.json
設(shè)置訪問(wèn)權(quán)限
文件內(nèi)容:
{
"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發(fā)起注冊(cè)
- 框架只能使用戶只能使用marathon_user和chronos_user且以root系統(tǒng)用戶運(yùn)行任務(wù)
- 只允許framework_user通過(guò)restapi關(guān)閉所有的框架下線
- 在json配置中有value有兩種設(shè)置可以是values或者type轮听,values對(duì)應(yīng)具體的用戶名骗露、角色、框架名稱血巍、系統(tǒng)用戶萧锉。type對(duì)應(yīng)范式匹配可設(shè)置為NONE或ANY,分別表示沒(méi)有任何值和所有值
slave啟動(dòng)
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
參數(shù)說(shuō)明:
- --authenticatee=crammd5
設(shè)置認(rèn)證方式 - --credential=credential
設(shè)置用戶名密碼信息
文件內(nèi)容:user2 password2
框架啟動(dòng)需要指定參數(shù)(以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
設(shè)置框架名稱 - --mesos_user root
設(shè)置框架創(chuàng)建任務(wù)在slave上運(yùn)行的系統(tǒng)用戶 - --mesos_role marathon_role
設(shè)置框架的角色 - --mesos_authentication_principal marathon_user
設(shè)置框架的認(rèn)證用戶名 - --mesos_authentication_secret_file /root/marathon-0.10.0/bin/mesos_secret
設(shè)置框架的認(rèn)證用戶密碼述寡,需要注意文件中只能包含名稱柿隙,不能包含換行字符和空格
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
設(shè)置框架名稱 - --user root
設(shè)置框架創(chuàng)建的任務(wù)在slave上運(yùn)行的系統(tǒng)用戶 - --mesos_role chronos_role
設(shè)置框架角色 - --mesos_authentication_principal chronos_user
設(shè)置框架的認(rèn)證用戶名 - --mesos_authentication_secret_file /root/chronos-2.4.0/bin/mesos_secret
設(shè)置框架的認(rèn)證密碼,需要注意文件中只能包含名稱鲫凶,不能包含換行字符和空格
使用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