手动部署开发集群
本文介绍手工部署用于开发测试用途的服务集群的步骤。
适用人群
- 想要断点调试
- 虚拟机配置低
- 不想使用docker打包镜像
- 想要在macOS/Linux上直接开发
已知问题
- macOS上调试不了host服务
- 配置复杂
环境准备
这里以Debain 11环境为例,仅配置nginx, apigateway, keystone, region等服务组成的最小集群,其他服务可以根据需要自行添加。
- Linux 或 macOS
- 4核8G
基础软件安装
- nginx
- MariaDB 5.5 或 MySQL 5.7
- git, make, npm, yarn, curl
- go >=1.18
源码克隆
这里假设克隆源码的目录分别为 /root/cloudpods /root/dashboard
# 克隆后端源代码
$ git clone https://github.com/yunionio/cloudpods.git
# 这里需要将代码切到自己想要的分支,这里设为 release/3.9
$ cd cloudpods && git checkout release/3.10 && cd /root
# 克隆前端源代码
$ git clone https://github.com/yunionio/dashboard.git
# 前端代码分支需要和后端保持一致
$ cd dashboard && git checkout release/3.10 && cd /root
# 创建配置文件放置目录
$ mkdir -p /etc/yunion
启动nginx及数据库服务
$ systemctl enable --now nginx mariadb
认证服务(keystone)初始化
第一个要起的服务是keystone,因为其他服务都依赖于认证服务
- 首先配置keystone的数据库
# 为keystone服务创建数据库及数据库账号
$ mysql -uroot -e 'create database keystone;'
# 这里设置一个密码为cloudpods-keystone的keystone用户,后面配置文件会用到
$ mysql -uroot -e 'grant all privileges on keystone.* to "keystone"@"%" identified by "cloudpods-keystone"; flush privileges;'
- 下面配置keystone服务
# 编译keysonte
$ cd /root/cloudpods && make cmd/keystone
# 编写keystone服务的配置文件
$ mkdir -p /etc/yunion/keystone
# 这里要注意使用刚创建的数据库及数据库账号密码
$ cat<<EOF >/etc/yunion/keystone/keystone.conf
address = '127.0.0.1'
port = 5000
admin_port = 35357
sql_connection = 'mysql+pymysql://keystone:cloudpods-keystone@localhost:3306/keystone?charset=utf8'
log_level = 'debug'
auto_sync_table = true
EOF
$ 初始化配置
# 这里会先根据配置初始化keystone的数据库表,并设置sysadmin用户密码,这里设置为123@admin 后面会用到
$ /root/cloudpods/_output/bin/keystone --conf /etc/yunion/keystone/keystone.conf --bootstrap-admin-user-password 123@admin --exit-after-db-init
# 启动keystone服务
$ /root/cloudpods/_output/bin/keystone --conf /etc/yunion/keystone/keystone.conf
- 配置keystone服务
climc 初始化
认证服务完成后,需要用climc进行部分操作
# 编译climc命令, 并放置到可执行环境目录里面
$ cd /root/cloudpods && make cmd/climc && cp /root/cloudpods/_output/bin/climc /usr/local/bin/
# 编写rc_admin文件
$ cat<<EOF >/etc/yunion/rc_admin
export OS_REGION_NAME=Yunion
export OS_PROJECT_NAME=system
export OS_PASSWORD=123@admin
export OS_AUTH_URL=http://127.0.0.1:35357/v3
export OS_USERNAME=sysadmin
export OS_ENDPOINT_TYPE=publicURL
EOF
# 设置环境变量
$ source /etc/yunion/rc_admin
# 保存sysadmin的policy
$ cat<<EOF >/root/sysadmin
policy:
'*':
'*':
'*': allow
EOF
# 创建sysadmin的权限
$ climc policy-create --enabled --scope system --is-system sysadmin /root/sysadmin
# 将sysadmin权限绑定到admin角色上
$ climc policy-bind-role --project-id system --role-id admin sysadmin
# 将sysadmin以admin的角色加入system项目, 此后sysadmin用户才拥有整个平台的操作权限, 若报ForbiddenError错误,可以重启keystone服务后,再次尝试此操作
$ climc user-join-project --role admin --project system sysadmin
# 创建 Yunion 区域
$ climc region-create Yunion
初始化服务及端点
# 创建 keystone 服务
$ climc service-create --enabled identity keystone
# 创建 keystone 端点
$ climc endpoint-create --enabled keystone Yunion public http://127.0.0.1:35357/v3
$ climc endpoint-create --enabled keystone Yunion admin http://127.0.0.1:35357/v3
$ climc endpoint-create --enabled keystone Yunion internal http://127.0.0.1:5000/v3