rancher 2.x 自定义 API KEY

概述

一般情况,在 Rancher server  部署完成后,需要都是在 Rancher UI 去创建集群,然后复制集群注册命令到节点去执行安装 K8S。

有时候可能需要在 Rancher server  部署完成后,使用自动化工具通过 Rancher server  API 去自动创建 K8S 集群,但是这里有一个 API KEY 认证的问题。

虽然目前 Rancher server 在 部署时候无法预置 API KEY,但是根据 API KEY 的创建逻辑,可以通过 Rancher server 容器,通过命令去自动创建 API KEY。

定义所需变量

通过变量定义一些需要的参数,变量 token 值,以及 token 有效期等。

user_id=$( kubectl get user -o custom-columns=name:metadata.name,displayName:displayName | grep 'user-' | grep -w 'Default Admin' | awk '{print $1}' )
token=$( head /dev/urandom | tr -dc a-z0-9 | head -c 54 )
token_name=token-$( head /dev/urandom | tr -dc a-z0-9 | head -c 5 )
token_ttl=86400000 # 有效期,单位毫秒
expiresAt=$( date -d @${token_ttl} ) # 过期时间
server_url=https://192.168.50.52
echo ${user_id} >> token-info.txt
echo ${token} >> token-info.txt
echo ${token_name} >> token-info.txt
echo ${token_ttl} >> token-info.txt
echo ${expiresAt} >> token-info.txt
echo ${server_url} >> token-info.txt

执行 kubectl 命令创建 token

根据上一步定义的变量去创建 API KEY

cat <<EOF | kubectl apply -f -
apiVersion: management.cattle.io/v3
authProvider: local
current: false
description: test
expired: false
expiresAt: "${expiresAt}" # TTL
isDerived: true
kind: Token
lastUpdateTime: ""
metadata:
generateName: token-
labels:
authn.management.cattle.io/token-userId: ${user_id}
cattle.io/creator: norman
name: ${token_name}
token: ${token}
ttl: ${token_ttl}
userId: ${user_id}
userPrincipal:
displayName: Default Admin
loginName: admin
me: true
metadata:
name: local://${user_id}
principalType: user
provider: local
EOF

设置 server_url

一般情况,在 Rancher server 部署完成后需要访问一个地址去初始化 Rancher server,比如设置 server_url 和 admin 密码。但是只有在配置好 server_url 后,才可以正常的请求 Rancher server API 。有时候可能需要在 Rancher server 部署完成后,不登录  Rancher UI 即可正常通过 Rancher server API 创建 K8S 集群,那么就需要执行以下命令去设置 server_url。

kubectl patch settings.management.cattle.io server-url -p '{"value": "'${server_url}'"}' --type='merge';

 

赞(0) 打赏
未经允许不得转载:大咖说Rancher » rancher 2.x 自定义 API KEY

支付宝扫一扫打赏

img

微信扫一扫打赏

img