在Ceph对象存储中启用和配置REST API访问

时间:2020-02-23 14:38:05  来源:igfitidea点击:

如果在生产中有运行Ceph对象存储群集,则可能需要为管理提供RESTful API,与其他系统和监控集成。
Ceph Manager(Ceph-MGR)的RESTful API插件提供了一个用于与Ceph存储群集交互的API。

在本教程中,我们将向我们展示如何在Ceph存储群集上启用RESTful API访问,并为我们需要的任何集成创建用户。
在继续之前,请确保我们有一个工作的Ceph存储群集。

Ceph Rest API允许我们:显示有关监视器和OSDSCreate或者编辑PoolsView的信息,并在群集,监视器和OSDSamong的OSDSshow配置选项上启动计划进程许多其他操作

第1步:启用RESTFUL API MGR插件

Ceph Manager守护程序(Ceph-Mgr)沿着监视守护程序运行,为外部监控和管理系统提供额外的监控和接口。
我们将在MGR中启用Ceph Rest插件。

使用Ceph配置登录Ceph群集节点,正确完成,并运行以下命令以启用RESTful API插件。

# ceph mgr module enable restful

要查看所有可用的模块状态,请使用命令:

# ceph mgr module ls

来自UI:

步骤2:为API端点配置SSL证书

模块将在MGR正在运行的主机上的所有IPv4和IPv6地址上接受端口8003上的HTTPS请求。
除非我们否则设置它,否则这是默认设置。
在API端点可用之前,我们需要配置SSL证书。

如果没有签名有效证书,请使用命令生成自签名证书:

# ceph restful create-self-signed-cert

更新配置后,服务将自动启动。
要确认它正常工作,请使用curl命令在活动的MGR节点上测试。

# curl -k https://localhost:8003/
{
    "api_version": 1,
    "auth": "Use \"ceph restful create-key <key>\" to create a key pair, pass it as HTTP Basic auth to authenticate",
    "doc": "See /doc endpoint",
    "info": "Ceph Manager RESTful API server"

如果使用防火墙,请确保使用Active Ceph-MGR守护程序在节点上启用8003端口。
确认:

# ceph -s
# firewall-cmd --add-port=5000/tcp --permanent
# firewall-cmd --reload

如果我们有良好的签名证书,请使用命令应用它们:

ceph config-key set mgr/restful/crt -i restful.crt
ceph config-key set mgr/restful/key -i restful.key

其中:RESTFUL.CRT是vallyrestful的证书的名称.Key是证书使用的密钥的名称

第3步:使用基本身份验证创建API HTTP用户

API访问需要用户。
让我们创建一个HTTP用户并为HTTP基本身份验证生成密码。

命令语法是:

# ceph restful create-key <username>

我会创建一个名为Cephadmin的用户

# ceph restful create-key cephadmin
1c4dcb01-587b-4558-8878-1209b525de8c

我们可以始终使用以下命令检查用户名和键:

# ceph restful list-keys
{
  "cephadmin": "1c4dcb01-587b-4558-8878-1209b525de8c"
}

生成凭据后,我们可以使用CURL验证API访问。
命令语法是:

https://<username>:<password-key><@mgr-node>:<APIPort>/<REQUEST>

这是一个例子:

# curl -k https://cephadmin:Hyman@theitroad:8003/server
[
    {
        "ceph_version": "ceph version 14.2.7 (3d58626ebeec02d8385a4cefb92c6cbc3a45bfe8) nautilus (stable)",
        "hostname": "cephmon01.example.com",
        "services": [
            {
                "id": "cephmon01",
                "type": "mgr"
            },
            {
                "id": "cephmon02",
                "type": "mon"
            },
            {
                "id": "cephmon03",
                "type": "rgw"
            }
        ]
    },
..........
# url -k https://cephadmin:Hyman@theitroad:8003/config/osd
[
    "sortbitwise",
    "recovery_deletes",
    "purged_snapdirs",
    "pglog_hardlimit"