From d7a8b5db1a86f53a5789ca42e9a6a066bc1a8e51 Mon Sep 17 00:00:00 2001 From: jiayuan929 <252461528@qq.com> Date: Tue, 5 Nov 2024 15:06:52 +0800 Subject: [PATCH 1/3] =?UTF-8?q?docs:=20=E5=A2=9E=E5=BC=BA=E6=9C=8D?= =?UTF-8?q?=E5=8A=A1=E6=9C=AC=E5=9C=B0=E5=BC=80=E5=8F=91=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/resource/img/svc_spec.png | Bin 0 -> 32213 bytes svc-bkrepo/README.md | 131 ++++++++++++++++++++++++++ svc-mysql/README.md | 163 +++++++++++++++++++++++++++++++++ svc-otel/README.md | 124 +++++++++++++++++++++++++ svc-rabbitmq/README.md | 126 +++++++++++++++++++++++++ 5 files changed, 544 insertions(+) create mode 100644 docs/resource/img/svc_spec.png create mode 100644 svc-bkrepo/README.md create mode 100644 svc-mysql/README.md create mode 100644 svc-otel/README.md create mode 100644 svc-rabbitmq/README.md diff --git a/docs/resource/img/svc_spec.png b/docs/resource/img/svc_spec.png new file mode 100644 index 0000000000000000000000000000000000000000..a7c9fdd0339ccf5308371c11fa872eff81328f1e GIT binary patch literal 32213 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 H*8~0s0k4c7 literal 0 HcmV?d00001 diff --git a/svc-bkrepo/README.md b/svc-bkrepo/README.md new file mode 100644 index 0000000000..bf97ba0f1e --- /dev/null +++ b/svc-bkrepo/README.md @@ -0,0 +1,131 @@ +# svc-bkrepo + +`svc-bkrepo` 是蓝鲸开发者中心的蓝鲸制品库 bkrepo 增强服务模块。 + +## 本地开发指引 + +### 1. 安装 Python 3.11 + +推荐使用 [pyenv](https://github.com/pyenv/pyenv) 管理 Python 环境。 + +- 安装 pyenv,请参考 [相关指引](https://github.com/pyenv/pyenv#getting-pyenv)。 +- 使用 pyenv 安装 Python 3.11: + +```shell +❯ pyenv install 3.11.10 +``` + +### 2. 安装项目依赖 + +本项目使用 [poetry](https://python-poetry.org/) 管理依赖。 + +- 安装 poetry 并通过它安装依赖: + +```shell +❯ make init-py-dep +``` + +完成依赖安装后,可以使用 poetry 启动项目,常用命令包括: + +- `poetry shell`:进入当前 virtualenv。 +- `poetry run {COMMAND}`:在 virtualenv 中执行命令。 + +### 3. 配置本地环境变量 + +设置环境变量(可以在项目根目录新建 `.envrc` 文件,或在终端中手动执行以下内容): + +```bash +# 与 apiserver 模块通信的密钥 +export PAAS_SERVICE_JWT_CLIENTS_KEY="xxx" + +# 数据库配置 +export MYSQL_NAME="svc_bkrepo" +export MYSQL_USER="root" +export MYSQL_PASSWORD="" +export MYSQL_HOST="" +export MYSQL_PORT="3306" + +# 数据库加密密钥,设置后不能变更,否则已加密的 DB 数据将无法解密 +# tr -dc A-Za-z0-9 Date: Tue, 5 Nov 2024 15:09:37 +0800 Subject: [PATCH 2/3] docs: minor --- svc-bkrepo/README.md | 2 ++ svc-mysql/README.md | 2 ++ svc-rabbitmq/README.md | 2 ++ 3 files changed, 6 insertions(+) diff --git a/svc-bkrepo/README.md b/svc-bkrepo/README.md index bf97ba0f1e..ab74c7bd45 100644 --- a/svc-bkrepo/README.md +++ b/svc-bkrepo/README.md @@ -78,6 +78,8 @@ config = {"endpoint_url": "http://bkrepo.bk-dev.woa.com", "username": "bksaas-ad Plan.objects.create(name="default-bk-repo", description="bk-repo service", is_active=True, service_id=svc.uuid, properties={ "region":"default"}, config=json.dumps(config)) ``` +**说明**:apiserver 侧也需要参考 apiserver/paasng/fixtures/services.yaml 初始化增强服务分类 + ### 5. 启动项目 使用以下命令启动项目: diff --git a/svc-mysql/README.md b/svc-mysql/README.md index 5ea9410c0f..13b8d2028b 100644 --- a/svc-mysql/README.md +++ b/svc-mysql/README.md @@ -77,6 +77,8 @@ config = {"auth_ip_list":["%"], "host":"127.0.0.1", "password":"blueking", "port Plan.objects.create(name="default-mysql", description="mysql 实例", is_active=True, service_id=svc.uuid, properties={ "region":"default"}, config=json.dumps(config)) ``` +**说明**:apiserver 侧也需要参考 apiserver/paasng/fixtures/services.yaml 初始化增强服务分类 + ### 5. 启动项目 使用以下命令启动项目: diff --git a/svc-rabbitmq/README.md b/svc-rabbitmq/README.md index f6212927a2..060dbd42dd 100644 --- a/svc-rabbitmq/README.md +++ b/svc-rabbitmq/README.md @@ -74,6 +74,8 @@ python manage.py register_cluster \ --check ``` +**说明**:apiserver 侧也需要参考 apiserver/paasng/fixtures/services.yaml 初始化增强服务分类 + ### 5. 启动项目 使用以下命令启动项目: From bcecd9e95149bd7b82845cd3c4129d27b2f8c168 Mon Sep 17 00:00:00 2001 From: jiayuan929 <252461528@qq.com> Date: Tue, 5 Nov 2024 15:12:33 +0800 Subject: [PATCH 3/3] =?UTF-8?q?docs:=20=E4=BF=AE=E6=94=B9=20bkrepo=20?= =?UTF-8?q?=E5=9F=9F=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- svc-bkrepo/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/svc-bkrepo/README.md b/svc-bkrepo/README.md index ab74c7bd45..ec6697aa7f 100644 --- a/svc-bkrepo/README.md +++ b/svc-bkrepo/README.md @@ -72,7 +72,7 @@ svc = Service.objects.create(name="bkrepo", display_name_zh_cn="蓝鲸制品库" # bkrepo 上给蓝鲸 SaaS 增强服务使用的仓库信息,可参考 apiserver 项目下的脚本创建 bkrepo 仓库 # apiserver/paasng/paasng/plat_admin/initialization/management/commands/init_bkrepo.py -config = {"endpoint_url": "http://bkrepo.bk-dev.woa.com", "username": "bksaas-addons", "password": "blueking", "project": "bksaas-addons"} +config = {"endpoint_url": "http://bkrepo.example.com", "username": "bksaas-addons", "password": "blueking", "project": "bksaas-addons"} # 注意这里是社区版本的初始化数据,如果是其他版本,需要修改 region 的值 Plan.objects.create(name="default-bk-repo", description="bk-repo service", is_active=True, service_id=svc.uuid, properties={ "region":"default"}, config=json.dumps(config))