如何通过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; S