如何通过http(s)接口方式获取Rancher的Api & Keys

如何通过http(s)接口方式获取Rancher的[Api & Keys]

PS:本文rancher版本为v2.4.10

在某些情况下,我们可能会制作k3(8)s+rancher+app的shell安装脚本来进行全套软件的安装(或其他目的的脚本)。

有时候,我们在安装好rancher以后,希望继续处理一些其他的工作,而且这个时候我们希望通过rancher cli或者直接用api/v3的http接口获取一些东西,就会要求提供Api & Keys

我们知道,可以在rancher ui中,通过
在这里插入图片描述

得到

但是,这就要求shell安装过程(或其他目的过程)中,必须人工去操作界面,这不符合我们的需求。

Q:那么如何获取到API & Keys呢?
A:我们可以先获取到rancher的用户名密码,然后通过模仿ui的接口操作来进行处理,也就是通过POST请求来创建并得到这个数据


下面开始具体步骤:

1、创建默认用户密码

我们知道,如果不进行任何处理,rancher的ui登录密码是一个随机的密码,这就导致了获取密码的难度(有办法,但是太曲折)。
具体办法如下:

在rancher的环境变量中增加:
CATTLE_BOOTSTRAP_PASSWORD=password

至于具体情况是用docker还是helm,就看自己的选择了,docker呢,就-e就好了,如果是用helm通过yaml渲染安装,那就改yaml中的env部分

2、通过ui的登录接口登录,并且获取到Cookie

我们可以通过

curl -i -k -X POST -d '{"username":"admin","password":"{第一步创建的密码}","description":"UI Session","responseType":"cookie","ttl":57600000,"labels":{"ui-session":"true"}}' 'https://{rancher地址}/v3-public/localProviders/local?action=login'

来登录(如果是2.4以上的版本,也可以去浏览器F12看一下登录地址即可)

如果一切正常,会得到一个返回:

HTTP/1.1 200 OK
Set-Cookie: R_SESS=token-q6spl:6rd49xgm9hcvr4854r2mkn5664lsb8zl4svl7nknqmp9cpzz566kd6; Path=/; HttpOnly; Secure
X-Content-Type-Options: nosniff
Date: Thu, 18 Jan 2024 03:04:56 GMT
Content-Length: 0

这里面的
R_SESS=token-q6spl:6rd49xgm9hcvr4854r2mkn5664lsb8zl4svl7nknqmp9cpzz566kd6
就是我们需要的内容

3、使用上述Cookie,完成Api & Keys的创建,然后通过返回值获取

我们在拿到Cookie以后,就可以通过创建接口来进行创建,它会返回创建好的数据

curl -i -k -X POST -H "Cookie: R_SESS=token-q6spl:6rd49xgm9hcvr4854r2mkn5664lsb8zl4svl7nknqmp9cpzz566kd6;"  -H "content-type: application/json" -d '{"current":false,"enabled":true,"expired":false,"isDerived":false,"ttl":0,"type":"token","description":"{密钥的名字}"}' https://{rancher地址}/v3/token

通过以上接口,我们就能创建并获取到数据
返回样例如下

{
    "authProvider":"local",
    "baseType":"token",
    "clusterId":null,
    "created":"2024-01-18T07:56:53Z",
    "createdTS":1705564613000,
    "creatorId":null,
    "current":false,
    "description":"wangxi",
    "enabled":true,
    "expired":false,
    "expiresAt":"",
    "groupPrincipals":null,
    "id":"token-nbbsd",
    "isDerived":true,
    "labels":{
        "authn.management.cattle.io/token-userId":"user-t67gl",
        "cattle.io/creator":"norman"
    },
    "lastUpdateTime":"",
    "links":{
        "remove":"https://172.16.148.2:38080/v3/tokens/token-nbbsd",
        "self":"https://172.16.148.2:38080/v3/tokens/token-nbbsd",
        "update":"https://172.16.148.2:38080/v3/tokens/token-nbbsd"
    },
    "name":"token-nbbsd",
    "token":"token-nbbsd:4gbdwxk7hdcbm4swp64xpv8qdqv2q5fnw2zd2v4cr2nqsrdhkqc5wf",
    "ttl":0,
    "type":"token",
    "userId":"user-t67gl",
    "userPrincipal":"map[displayName:Default Admin loginName:admin me:true metadata:map[creationTimestamp:\u003cnil\u003e name:local://user-t67gl] principalType:user provider:local]",
    "uuid":"c01c6050-b591-4ffa-b179-e5484124f459"
}

我们最终需要得到就是“token”这个字段中的内容

接下来,就可以用这个apikey来进行处理了,比如使用rancher cli进行登录

rancher login --token "token-nbbsd:4gbdwxk7hdcbm4swp64xpv8qdqv2q5fnw2zd2v4cr2nqsrdhkqc5wf" xxxxxx
  • 7
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值