1. 部署 Jumpserver
需要提前准备好 StorageClass,用于存储 Jumpserver 的数据。除了下面提到的数据库,各个组件 jms-core、jms-web、jms-koko、jms-lion、jms-chen 都需要一个 PV 存储。
1.1 部署 MySQL
参考 https://github.com/shaowenchen/hubimage/blob/main/database/mysql8.yaml ,部署 MySQL。
需要调整一下 StorageClass 字段为集群中的可用值。
1.2 部署 Redis
参考 https://github.com/shaowenchen/hubimage/blob/main/database/redis7.yaml ,部署 Redis。
需要调整一下 StorageClass 字段为集群中的可用值。
3. 部署 Jumpserver
1
2
| helm repo add jumpserver https://jumpserver.github.io/helm-charts
helm repo update
|
https://github.com/jumpserver/helm-charts/blob/main/charts/jumpserver/values.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| global:
storageClass: ""
externalDatabase:
engine: mysql
host:
port:
user:
password:
database:
externalRedis:
host:
port:
password: ""
|
这里主要需要修改的是 global.storageClass
、externalDatabase
和 externalRedis
。
如果部署的集群对 docker hub 有访问限制,还需要修改 imageRegistry
和 imageOwner
。当然,还可以直接去 https://github.com/jumpserver/helm-charts/releases 下载最新的 release 版本,解压之后将镜像地址修改为自己的私有仓库地址。
1
| helm install jms-k8s jumpserver/jumpserver -n jumpserver -f values.yaml
|
卸载命令
1
| helm uninstall jms-k8s -n jumpserver
|
如果使用 NodePort 方式访问,除了修改 jumpserver-jms-web 为 NodePort 类型之外,还需要给 jumpserver-jms-core 添加环境变量 DOMAINS
允许新的访问入口,否则会出现如下提示:
1
2
3
| 配置文件有问题,无法登录,请联系管理员或查看最新文档
如果你是管理员,可以更新配置文件解决,设置配置项
DOMAINS=x.x.x.x:x
|
编辑 jumpserver-jms-core :
1
| kubectl -n jumpserver edit deployments.apps jms-k8s-jumpserver-jms-core
|
添加环境变量:
1
2
| - name: DOMAINS
value: x.x.x.x:x
|
首次访问需要重置 admin 用户的密码是 ChangeMe,登录之后会提示修改密码。
2. 资源导入
2.1 添加节点
点击页面左侧的 【资产管理 - 资产列表】,在根节点 Default 右键新节点。
节点其实就是给资产分组,这里新建一个节点,命名为 worker。
2.2 创建访问主机的账号
点击页面左侧的 【账号模板 】 创建一个特权用户 root。
2.3 脚本添加主机
1
2
| export JUMPSERVER="http://x.x.x.x:x"
export JUMPSERVER_PASSWORD="xxx"
|
1
2
3
4
5
| curl -X POST "${JUMPSERVER}/api/v1/authentication/auth/" \
-H 'Content-Type: application/json' \
-d "{\"username\": \"admin\", \"password\": \"${JUMPSERVER_PASSWORD}\"}"
{"token":"xxx"}
|
1
| export JUMPSERVER_TOKEN="xxx"
|
点击页面左侧的 【账号模板 】 中找到 root 账号,点击进入,即可看到账户模板的 id。
1
| export JUMPSERVER_ACCOUNT_ID="xxx"
|
1
2
3
4
| export GROUP_NAME="worker"
curl -s -H "Authorization: Bearer $JUMPSERVER_TOKEN" "$JUMPSERVER/api/v1/assets/nodes/" | jq -r --arg GROUP_NAME "$GROUP_NAME" '.[] | select(.name==$GROUP_NAME) | .id'
xxx
|
设置 GROUP_ID
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
| create_host() {
HOST_NAME="$1"
IP="$2"
data=$(cat <<EOF
{
"name": "$HOST_NAME",
"address": "$IP",
"platform": "1",
"protocols": [{"name": "ssh", "port": 22}],
"is_active": true,
"nodes": ["$GROUP_ID"],
"accounts": [{"template": "$JUMPSERVER_ACCOUNT_ID"}]
}
EOF
)
response=$(curl -s -X POST \
-H "Authorization: Bearer $JUMPSERVER_TOKEN" \
-H "Content-Type: application/json" \
-d "$data" \
"$JUMPSERVER/api/v1/assets/hosts/")
echo "Result: $response"
}
|
1
| create_host "x.x.x.x" "x.x.x.x"
|
2.4 批量添加主机
1
2
3
| kubectl get nodes -o wide | awk 'NR>1 {print $6}' | grep -v "<none>" | while read ip; do
create_host $ip $ip
done
|
2.5 重置 admin 密码
1
| kubectl -n jumpserver exec -it jms-k8s-jumpserver-jms-core-676b986bdd-6bpp8 -- bash
|
1
| cd /opt/jumpserver/apps
|
1
| python manage.py changepassword admin
|
3 授权用户访问
这里涉及到三个对象:
- 用户
- 资产,主机、数据库、集群等资源
- 用户与资产的授权规则
如果是对单个用户授权,需要进行一下操作:
- 在 【用户管理-用户列表】 中添加用户
- 在 【授权管理-资产授权】 中添加授权规则
创建授权规则时,选择用户,选择资产即可。
如果是对多个用户授权,可以创建一个用户组,将用户添加到用户组中,然后对用户组授权。
如果是对大批量的资源授权,需要将这些资源放到一个节点下,然后对用户授权这个节点。
4. 参考