如何 set/delete 在 mesos 中使用激活的 acl 配额?
How to set/delete quotas in mesos with activated acls?
我正在为如何使用激活的 acls 在 mesos 中获得配额而苦苦挣扎。
我正在使用 Mesos 版本 0.27.2。
我有三个大师使用以下标志:
- --ip=some-ip \
- --logging_level=信息\
- --advertise_ip=some-ip \
- --端口=5050 \
- --advertise_port=5050 \
- --注册表=replicated_log \
- --法定人数=2 \
- --zk=some-zookepyer-url \
- --cluster=AlisterDevelopment \
- --log_dir=/var/log/mesos/master\
- --work_dir=/var/lib/mesos/master\
- --offer_timeout=1分钟\
- --hostname=some-hostname \
- --credentials=file:///etc/mesos-master/passwords \
- --acls=file:///etc/mesos-master/acls \
- --authenticate_slaves
我的 acls 是这样的:
{
"permissive": false,
"run_tasks": [
{
"principals": { "values": ["ase", "core", "opss", "jenkins"] },
"users": { "values": ["jenkins"] }
}
],
"register_frameworks": [
{
"principals": { "values": ["ase"] },
"roles": { "values": ["ase"] }
},
{
"principals": { "values": ["opss"] },
"roles": { "values": ["opss"] }
},
{
"principals": { "values": ["core"] },
"roles": { "values": ["core"] }
},
{
"principals": { "values": ["jenkins"] },
"roles": { "values": ["jenkins"] }
}
],
"set_quotas": [
{
"principals": {
"values": ["ase", "core", "opss", "jenkins"]
},
"roles": {
"values": ["ase", "core", "opss", "jenkins"]
}
}
],
"remove_quotas": [
{
"principals": {
"values": ["ase", "core", "opss", "jenkins"]
},
"quota_principals": {
"values": ["ase", "core", "opss", "jenkins"]
}
}
]
}
对于主体 ase、core 和 ops,凭据文件中有密码,使用这些凭据注册框架工作正常,注册从属也是如此。
但是,当尝试使用 curl 添加配额时,我收到 403 Forbidden 作为响应。
curl -u opss -v -d @ase-quota.json -X POST http://SERVER-IP:5050/quota --header "Content-Type: application/json"
以上命令在未启用 ACLS 时工作正常。
再次启用后,删除配额失败,再次出现 403 Forbidden。
我在 mesos-master 日志中看到的是:
I0414 10:59:39.396838 9 http.cpp:501] HTTP GET for /master/state.json from 192.168.7.14:35248 with User-Agent='Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:44.0) Gecko/20100101 Firefox/44.0'
I0414 10:59:40.019409 8 http.cpp:501] HTTP POST for /master/quota from 192.168.7.14:35258 with User-Agent='curl/7.35.0'
I0414 10:59:40.031294 8 quota_handler.cpp:446] Authorizing principal 'ANY' to request quota for role 'ase'
用于添加,并且:
I0414 13:07:23.521467 9 http.cpp:501] HTTP DELETE for /master/quota/ase from 192.168.7.14:50685 with User-Agent='curl/7.35.0'
I0414 13:07:23.523748 9 quota_handler.cpp:472] Authorizing principal 'ANY' to remove quota set by 'ANY'
尝试删除配额时。
问题是,在这种情况下,我如何让 curl 或 mesos 意识到我正在担任主要 opss?
您没有在 mesos 主配置中设置参数 --authenticate_http=true。
我正在为如何使用激活的 acls 在 mesos 中获得配额而苦苦挣扎。
我正在使用 Mesos 版本 0.27.2。
我有三个大师使用以下标志:
- --ip=some-ip \
- --logging_level=信息\
- --advertise_ip=some-ip \
- --端口=5050 \
- --advertise_port=5050 \
- --注册表=replicated_log \
- --法定人数=2 \
- --zk=some-zookepyer-url \
- --cluster=AlisterDevelopment \
- --log_dir=/var/log/mesos/master\
- --work_dir=/var/lib/mesos/master\
- --offer_timeout=1分钟\
- --hostname=some-hostname \
- --credentials=file:///etc/mesos-master/passwords \
- --acls=file:///etc/mesos-master/acls \
- --authenticate_slaves
我的 acls 是这样的:
{
"permissive": false,
"run_tasks": [
{
"principals": { "values": ["ase", "core", "opss", "jenkins"] },
"users": { "values": ["jenkins"] }
}
],
"register_frameworks": [
{
"principals": { "values": ["ase"] },
"roles": { "values": ["ase"] }
},
{
"principals": { "values": ["opss"] },
"roles": { "values": ["opss"] }
},
{
"principals": { "values": ["core"] },
"roles": { "values": ["core"] }
},
{
"principals": { "values": ["jenkins"] },
"roles": { "values": ["jenkins"] }
}
],
"set_quotas": [
{
"principals": {
"values": ["ase", "core", "opss", "jenkins"]
},
"roles": {
"values": ["ase", "core", "opss", "jenkins"]
}
}
],
"remove_quotas": [
{
"principals": {
"values": ["ase", "core", "opss", "jenkins"]
},
"quota_principals": {
"values": ["ase", "core", "opss", "jenkins"]
}
}
]
}
对于主体 ase、core 和 ops,凭据文件中有密码,使用这些凭据注册框架工作正常,注册从属也是如此。
但是,当尝试使用 curl 添加配额时,我收到 403 Forbidden 作为响应。
curl -u opss -v -d @ase-quota.json -X POST http://SERVER-IP:5050/quota --header "Content-Type: application/json"
以上命令在未启用 ACLS 时工作正常。
再次启用后,删除配额失败,再次出现 403 Forbidden。
我在 mesos-master 日志中看到的是:
I0414 10:59:39.396838 9 http.cpp:501] HTTP GET for /master/state.json from 192.168.7.14:35248 with User-Agent='Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:44.0) Gecko/20100101 Firefox/44.0'
I0414 10:59:40.019409 8 http.cpp:501] HTTP POST for /master/quota from 192.168.7.14:35258 with User-Agent='curl/7.35.0'
I0414 10:59:40.031294 8 quota_handler.cpp:446] Authorizing principal 'ANY' to request quota for role 'ase'
用于添加,并且:
I0414 13:07:23.521467 9 http.cpp:501] HTTP DELETE for /master/quota/ase from 192.168.7.14:50685 with User-Agent='curl/7.35.0'
I0414 13:07:23.523748 9 quota_handler.cpp:472] Authorizing principal 'ANY' to remove quota set by 'ANY'
尝试删除配额时。
问题是,在这种情况下,我如何让 curl 或 mesos 意识到我正在担任主要 opss?
您没有在 mesos 主配置中设置参数 --authenticate_http=true。