模块:PILOT
- 1: 模块:Code
- 2: 模块:MySQL
- 3: 模块:Kafka
- 4: 模块:DuckDB
- 5: 模块:TigerBeetle
- 6: 模块:Kubernetes
- 7: 模块:Consul
1 - 模块:Code
Code-Server 现已整合到 VIBE 模块 中,请参阅新文档了解完整内容:
Code-Server 是在浏览器中运行的 VS Code,让您可以在任何设备上访问完整的开发环境。 Pigsty 的 VIBE 模块提供了 Code-Server 的自动化部署方案,通过 Nginx 反向代理提供 HTTPS 访问。
概述
Code-Server 作为 VIBE 模块的一部分,部署为 systemd 服务,通过 Nginx 反向代理暴露到 Web。
用户浏览器
↓ HTTPS
Nginx (https://i.pigsty/code/)
↓ proxy_pass
Code-Server (127.0.0.1:8443)
└─ User: {{ node_user }}
└─ WorkDir: {{ vibe_data }}
└─ DataDir: {{ code_data }}
快速开始
启用 Code-Server
在节点上设置 code_enabled: true(默认已启用),然后执行:
./vibe.yml -l <host> -t code
或部署完整的 VIBE 模块(Code-Server + JupyterLab + Claude Code):
./vibe.yml -l <host>
访问 Code-Server
部署完成后,通过以下地址访问:
- 子路径方式:
https://i.pigsty/code/ - 子域名方式:
https://code.pigsty(需在infra_portal中配置)
默认登录密码:Code.Server
参数配置
| 参数 | 默认值 | 说明 |
|---|---|---|
code_enabled | true | 是否在该节点启用 Code-Server |
code_port | 8443 | Code-Server 监听端口(仅 localhost) |
vibe_data | /fs | 工作目录(VS Code 打开的文件夹) |
code_data | /data/code | 用户数据目录(扩展、设置等) |
code_password | Code.Server | 登录密码 |
code_gallery | openvsx | 扩展市场:openvsx 或 microsoft |
扩展市场
Code-Server 默认使用 Open VSX 扩展市场。如需使用微软官方市场:
code_gallery: microsoft
中国大陆用户可使用清华镜像加速(自动配置)。
剧本与任务
Code-Server 通过 vibe.yml 剧本的 code 标签部署,包含以下任务:
| 标签 | 说明 |
|---|---|
code | Code-Server 完整部署 |
code_install | 安装 code-server 软件包 |
code_dir | 创建工作目录和数据目录 |
code_config | 渲染配置文件和 systemd 服务单元 |
code_launch | 启动 code-server 服务 |
常用命令:
# 部署 Code-Server
./vibe.yml -l <host> -t code
# 仅更新配置
./vibe.yml -l <host> -t code_config
# 重启服务
./vibe.yml -l <host> -t code_launch
目录结构
{{ vibe_data }} # 工作目录(如 /fs)
└── your-projects/ # 项目文件
{{ code_data }} # 数据目录(如 /data/code)
├── code-server/
│ ├── config.yaml # Code-Server 配置
│ ├── extensions/ # 已安装扩展
│ └── User/
│ └── settings.json # 用户设置
└── ...
/etc/systemd/system/code-server.service # systemd 服务单元
/etc/default/code # 环境变量
配置示例
基础配置
all:
children:
infra:
hosts:
10.10.10.10:
code_enabled: true
code_password: 'MySecurePassword'
AI 辅助编程沙箱
配合 JuiceFS 共享文件系统,打造云端开发环境(使用 vibe 配置模板):
all:
children:
infra:
hosts:
10.10.10.10:
code_enabled: true
code_password: 'Code.Server'
vibe_data: /fs # 使用 JuiceFS 挂载点作为工作目录
jupyter_enabled: true
jupyter_password: 'Jupyter.Lab'
claude_enabled: true
juice_instances:
jfs:
path: /fs
meta: postgres://dbuser_meta:DBUser.Meta@10.10.10.10:5432/meta
data: --storage postgres --bucket ...
常见问题
如何修改密码?
修改配置中的 code_password,然后重新执行剧本:
./vibe.yml -l <host> -t code_config,code_launch
如何安装扩展?
在 Code-Server 界面中直接搜索安装,或通过命令行:
code-server --install-extension ms-python.python
扩展市场访问慢?
使用 code_gallery: microsoft 切换到微软官方市场,或确保网络可访问 Open VSX。
如何使用 GitHub Copilot?
GitHub Copilot 目前不支持 Code-Server,可以考虑使用其他 AI 辅助编程工具。
支持平台
- 操作系统:EL 8/9/10、Ubuntu 20/22/24、Debian 11/12/13
- 架构:x86_64、ARM64
- Ansible:2.9+
2 - 模块:MySQL
概览
MySQL 模块本身目前仅在 Pigsty 专业版中提供 Beta 试用预览,注意,请不要将这里的 MySQL 用于生产环境。
安装
您可以直接使用以下命令,在 Pigsty 管理的节点上,直接从官方软件源安装 MySQL 8.0 (EL系统)
# el 7,8,9
./node.yml -t node_install -e '{"node_repo_modules":"node,mysql","node_packages":["mysql-community-server,mysql-community-client"]}'
# debian / ubuntu
./node.yml -t node_install -e '{"node_repo_modules":"node,mysql","node_packages":["mysql-server"]}'
您也可以将 MySQL 软件包加入本地软件源后,使用 MySQL 剧本 mysql.yml 进行生产环境部署。
配置
以下配置片段定义了一个单节点的 MySQL 实例,以及其中的 Database 与 User。
my-test:
hosts: { 10.10.10.10: { mysql_seq: 1, mysql_role: primary } }
vars:
mysql_cluster: my-test
mysql_databases:
- { name: meta }
mysql_users:
- { name: dbuser_meta ,host: '%' ,password: 'dbuesr_meta' ,priv: { "*.*": "SELECT, UPDATE, DELETE, INSERT" } }
- { name: dbuser_dba ,host: '%' ,password: 'DBUser.DBA' ,priv: { "*.*": "ALL PRIVILEGES" } }
- { name: dbuser_monitor ,host: '%' ,password: 'DBUser.Monitor' ,priv: { "*.*": "SELECT, PROCESS, REPLICATION CLIENT" } ,connlimit: 3 }
管理
以下是基本的 MySQL 集群基本管理操作:
使用 mysql.yml 创建 MySQL 集群:
./mysql.yml -l my-test
剧本
Pigsty 提供了一个与 MYSQL 模块相关的剧本,用于部署 MySQL 集群
mysql.yml: 根据配置清单部署 MySQL
mysql.yml
用于部署 MySQL 模式集群的 mysql.yml 剧本包含以下子任务:
mysql-id : generate mysql instance identity
mysql_clean : remove existing mysql instance (DANGEROUS)
mysql_dbsu : create os user mysql
mysql_install : install mysql rpm/deb packages
mysql_dir : create mysql data & conf dir
mysql_config : generate mysql config file
mysql_boot : bootstrap mysql cluster
mysql_launch : launch mysql service
mysql_pass : write mysql password
mysql_db : create mysql biz database
mysql_user : create mysql biz user
mysql_exporter : launch mysql exporter
mysql_register : register mysql service to prometheus
监控
Pigsty 提供了两个与 MYSQL 模块有关的监控面板:
MYSQL Overview 展示了 MySQL 集群的整体监控指标。
MYSQL Instance 展示了单个 MySQL 实例的监控指标详情
参数
MySQL 的可用配置项:
#-----------------------------------------------------------------
# MYSQL_IDENTITY
#-----------------------------------------------------------------
# mysql_cluster: #CLUSTER # mysql cluster name, required identity parameter
# mysql_role: replica #INSTANCE # mysql role, required, could be primary,replica
# mysql_seq: 0 #INSTANCE # mysql instance seq number, required identity parameter
#-----------------------------------------------------------------
# MYSQL_BUSINESS
#-----------------------------------------------------------------
# mysql business object definition, overwrite in group vars
mysql_users: [] # mysql business users
mysql_databases: [] # mysql business databases
mysql_services: [] # mysql business services
# global credentials, overwrite in global vars
mysql_root_username: root
mysql_root_password: DBUser.Root
mysql_replication_username: replicator
mysql_replication_password: DBUser.Replicator
mysql_admin_username: dbuser_dba
mysql_admin_password: DBUser.DBA
mysql_monitor_username: dbuser_monitor
mysql_monitor_password: DBUser.Monitor
#-----------------------------------------------------------------
# MYSQL_INSTALL
#-----------------------------------------------------------------
# - install - #
mysql_dbsu: mysql # os dbsu name, mysql by default, better not change it
mysql_dbsu_uid: 27 # os dbsu uid and gid, 306 for default mysql users and groups
mysql_dbsu_home: /var/lib/mysql # mysql home directory, `/var/lib/mysql` by default
mysql_dbsu_ssh_exchange: true # exchange mysql dbsu ssh key among same mysql cluster
mysql_packages: # mysql packages to be installed, `mysql-community*` by default
- mysql-community*
- mysqld_exporter
# - bootstrap - #
mysql_data: /data/mysql # mysql data directory, `/data/mysql` by default
mysql_listen: '0.0.0.0' # mysql listen addresses, comma separated IP list
mysql_port: 3306 # mysql listen port, 3306 by default
mysql_sock: /var/lib/mysql/mysql.sock # mysql socket dir, `/var/lib/mysql/mysql.sock` by default
mysql_pid: /var/run/mysqld/mysqld.pid # mysql pid file, `/var/run/mysqld/mysqld.pid` by default
mysql_conf: /etc/my.cnf # mysql config file, `/etc/my.cnf` by default
mysql_log_dir: /var/log # mysql log dir, `/var/log/mysql` by default
mysql_exporter_port: 9104 # mysqld_exporter listen port, 9104 by default
mysql_parameters: {} # extra parameters for mysqld
mysql_default_parameters: # default parameters for mysqld
3 - 模块:Kafka
概览
Kafka 模块本身目前仅在 Pigsty 专业版中提供 Beta 试用预览。
安装
如果您使用开源版 Pigsty,可以使用以下命令,在指定节点上安装 Kafka 及其 Java 依赖。
Pigsty 在官方 Infra 仓库中提供了 Kafka 3.8.0 的 RPM 与 DEB 安装包,如果需要使用,可以直接下载安装。
./node.yml -t node_install -e '{"node_repo_modules":"infra","node_packages":["kafka"]}'
Kafka 依赖 Java 运行环境,因此在安装 Kafka 时,需要安装可用的 JDK (默认使用 OpenJDK 17,但其他 JDK 与版本,例如 8,11 都可以使用)
# EL7 (没有 JDK 17 支持)
./node.yml -t node_install -e '{"node_repo_modules":"node","node_packages":["java-11-openjdk-headless"]}'
# EL8 / EL9 (使用 OpenJDK 17 )
./node.yml -t node_install -e '{"node_repo_modules":"node","node_packages":["java-17-openjdk-headless"]}'
# Debian / Ubuntu (使用 OpenJDK 17)
./node.yml -t node_install -e '{"node_repo_modules":"node","node_packages":["openjdk-17-jdk"]}'
配置
单节点 Kafka 配置样例,请注意,在 Pigsty 单机部署模式下,管理节点上的 9093 端口默认已经被 AlertManager 占用。
建议在管理节点上安装 Kafka 时,Peer Poort 使用其他端口,例如(9095)。
kf-main:
hosts:
10.10.10.10: { kafka_seq: 1, kafka_role: controller }
vars:
kafka_cluster: kf-main
kafka_data: /data/kafka
kafka_peer_port: 9095 # 9093 is already hold by alertmanager
三节点 Kraft 模式 Kafka 集群配置样例:
kf-test:
hosts:
10.10.10.11: { kafka_seq: 1, kafka_role: controller }
10.10.10.12: { kafka_seq: 2, kafka_role: controller }
10.10.10.13: { kafka_seq: 3, kafka_role: controller }
vars:
kafka_cluster: kf-test
管理
以下是基本的 Kafka 集群基本管理操作:
使用 kafka.yml 创建 Kafka 集群:
./kafka.yml -l kf-main
./kafka.yml -l kf-test
创建一个名为 test 的 Topic:
kafka-topics.sh --create --topic test --partitions 1 --replication-factor 1 --bootstrap-server localhost:9092
这里 --replication-factor 1 表示每个数据只会复制一次,--partitions 1 表示只创建一个分区。
使用以下命令,查看 Kafka 中的 Topic 列表:
kafka-topics.sh --bootstrap-server localhost:9092 --list
使用 Kafka 自带的消息生产者,向 test Topic 发送消息:
kafka-console-producer.sh --topic test --bootstrap-server localhost:9092
>haha
>xixi
>hoho
>hello
>world
> ^D
使用 Kafka 自带的消费者,从 test Topic 中读取消息:
kafka-console-consumer.sh --topic test --from-beginning --bootstrap-server localhost:9092
剧本
Pigsty 提供了两个与 KAFKA 模块相关的剧本,分别用于纳管与移除节点。
node.yml:纳管节点,并调整节点到期望的状态node-rm.yml:从 pigsty 中移除纳管节点
此外, Pigsty 还提供了两个包装命令工具:node-add 与 node-rm,用于快速调用剧本。
kafka.yml
用于部署 Kafka KRaft 模式集群的 kafka.yml 剧本包含以下子任务:
kafka-id : generate kafka instance identity
kafka_clean : remove existing kafka instance (DANGEROUS)
kafka_user : create os user kafka
kafka_pkg : install kafka rpm/deb packages
kafka_link : create symlink to /usr/kafka
kafka_path : add kafka bin path to /etc/profile.d
kafka_svc : install kafka systemd service
kafka_dir : create kafka data & conf dir
kafka_config : generate kafka config file
kafka_boot : bootstrap kafka cluster
kafka_launch : launch kafka service
kafka_exporter : launch kafka exporter
kafka_register : register kafka service to prometheus
监控
Pigsty 提供了两个与 KAFKA 模块有关的监控面板:
KAFKA Overview 展示了 Kafka 集群的整体监控指标。
KAFKA Instance 展示了单个 Kafka 实例的监控指标详情
参数
Kafka 的可用配置项:
#kafka_cluster: #CLUSTER # kafka cluster name, required identity parameter
#kafka_role: controller #INSTANCE # kafka role, controller, broker, or controller-only
#kafka_seq: 0 #INSTANCE # kafka instance seq number, required identity parameter
kafka_clean: false # cleanup kafka during init? false by default
kafka_data: /data/kafka # kafka data directory, `/data/kafka` by default
kafka_version: 3.8.0 # kafka version string
scala_version: 2.13 # kafka binary scala version
kafka_port: 9092 # kafka broker listen port
kafka_peer_port: 9093 # kafka broker peer listen port, 9093 by default (conflict with alertmanager)
kafka_exporter_port: 9308 # kafka exporter listen port, 9308 by default
kafka_parameters: # kafka parameters to be added to server.properties
num.network.threads: 3
num.io.threads: 8
socket.send.buffer.bytes: 102400
socket.receive.buffer.bytes: 102400
socket.request.max.bytes: 104857600
num.partitions: 1
num.recovery.threads.per.data.dir: 1
offsets.topic.replication.factor: 1
transaction.state.log.replication.factor: 1
transaction.state.log.min.isr: 1
log.retention.hours: 168
log.segment.bytes: 1073741824
log.retention.check.interval.ms: 300000
#log.retention.bytes: 1073741824
#log.flush.interval.ms: 1000
#log.flush.interval.messages: 10000
资源
Pigsty 为 PostgreSQL 提供了一些 Kafka 相关的扩展插件:
kafka_fdw,一个有趣的 FDW,允许用户直接从 PostgreSQL 中读写 Kafka Topic 数据wal2json,用于从 PostgreSQL 中逻辑解码 WAL 日志,生成 JSON 格式的变更数据wal2mongo,用于从 PostgreSQL 中逻辑解码 WAL 日志,生成 BSON 格式的变更数据decoder_raw,用于从 PostgreSQL 中逻辑解码 WAL 日志,生成 SQL 格式的变更数据test_decoding,用于从 PostgreSQL 中逻辑解码 WAL 日志,生成 RAW 格式的变更数据
4 - 模块:DuckDB
DuckDB 是一个高性能,嵌入式的分析数据库。
DuckDB 是嵌入式数据库,不需要部署与服务化,只需要在节点上安装 DuckDB 软件包即可使用。
安装
Pigsty Infra 仓库 提供最新版本的 DuckDB RPM/DEB 包,直接安装即可。
./node.yml -t node_install -e '{"node_repo_modules":"infra","node_packages":["duckdb"]}'
使用 pig 安装:
pig repo add infra -u # 添加 Infra 仓库
pig install duckdb # 安装 DuckDB 包
相关资源
Pigsty 为 PostgreSQL 提供了一些 DuckDB 相关的扩展插件:
pg_duckdb,由 DuckDB 官方 MotherDuck 和 Hydra 出品的扩展插件pg_mooncake,在pg_duckdb扩展的基础上更进一步提供列式存储引擎与同步功能。pg_analytics,旨在基于 DuckDB 提供高性能 OLAP 分析能力,已归档duckdb_fdw,DuckDB 外部数据源包装器,允许从PG中读写 DuckDB 数据文件,目前尚未更新
5 - 模块:TigerBeetle
TigerBeetle 是一个金融会计事务专用数据库,提供了极致性能与可靠性。
概览
TigerBeetle 模块目前仅在 Pigsty 专业版中提供 Beta 试用预览。
安装
Pigsty Infra 仓库中提供了 TigerBeetle 的 RPM / DEB 软件包,使用以下命令即可完成安装:
./node.yml -t node_install -e '{"node_repo_modules":"infra","node_packages":["tigerbeetle"]}'
即可安装,然后请参考官方文档进行配置:https://github.com/tigerbeetle/tigerbeetle
请注意,TigerBeetle 仅支持 Linux 内核 5.5 或更高版本,因此默认在 EL7 (3.10) / EL8 (4.18) 系统上无法使用。
请使用 EL9 (5.14), Ubuntu 22.04 (5.15),或 Debian 12 (6.1) 与 Debian 11 (5.10),或其他支持的系统来安装 Tiger Beetle
6 - 模块:Kubernetes
Kubernetes 是生产级无状态容器调度编排私有云平台。
Pigsty 提供了原生的 [ETCD] 集群支持,可以供 Kubernetes 使用,因此也在专业版中提供了 KUBE 模块,用于部署生产级 Kubernetes 集群。
Kubernetes 模块目前仅在 Pigsty Pro 专业版本中提供 Beta 预览,在开源版本中不可用。
但您可以直接在 Pigsty 中指定节点仓库,安装 Kubernetes 软件包,并使用 Pigsty 调整环境配置,置备节点供 K8S 部署使用,解决交付的最后一公里问题。
SealOS
SealOS 是一个 Kubernetes 发行版,可以用于将整个 Kubernetes 集群打包制作为一个镜像在其他地方使用
Pigsty 在 Infra 仓库中提供了 SealOS 5.0 的 RPM 与 DEB 安装包,可以直接下载安装,并使用 SealOS 管理集群。
./node.yml -t node_install -e '{"node_repo_modules":"infra","node_packages":["sealos"]}'
Kubernetes
如果您更喜欢使用经典的 Kubeadm 来部署 Kubernetes,请参考下面的 KUBE 模块参考。
./node.yml -t node_install -e '{"node_repo_modules":"kube","node_packages":["kubeadm,kubelet,kubectl"]}'
Kubernetes 支持多种容器运行时,要是用 Containerd 容器运行时,请确保节点上已经安装了 Containerd 软件包。
./node.yml -t node_install -e '{"node_repo_modules":"node,docker","node_packages":["containerd.io"]}'
若要使用 Docker 作为容器运行时,您需要安装 Docker ,并使用 cri-dockerd 项目桥接(EL9 / D11 / U20 尚不可用):
./node.yml -t node_install -e '{"node_repo_modules":"node,infra,docker","node_packages":["docker-ce,docker-compose-plugin,cri-dockerd"]}'
剧本
kube.yml 剧本
监控
TBD
参数
Kubernetes 模块支持以下配置参数
#kube_cluster: #IDENTITY# # define kubernetes cluster name
kube_role: node # default kubernetes role (master|node)
kube_version: 1.31.0 # kubernetes version
kube_registry: registry.aliyuncs.com/google_containers # kubernetes version aliyun k8s miiror repository
kube_pod_cidr: "10.11.0.0/16" # kubernetes pod network cidr
kube_service_cidr: "10.12.0.0/16" # kubernetes service network cidr
kube_dashboard_admin_user: dashboard-admin-sa # kubernetes dashboard admin user name
7 - 模块:Consul
Consul 是一个分布式 DCS + KV + DNS + 服务注册/发现的组件。
在旧版本 (1.x) 的 Pigsty 里,默认使用 Consul 作为高可用的 DCS,现在该支持已经移除,但会在后续重新作为独立模块提供。
配置
要部署 Consul,您需要将所有节点的 IP 地址和主机名添加到 consul 分组中。
您至少需要指定一个节点的 consul_role 为 server,其他节点的 consul_role 默认为 node。
consul:
hosts:
10.10.10.10: { nodename: meta , consul_role: server }
10.10.10.11: { nodename: node-1 }
10.10.10.12: { nodename: node-2 }
10.10.10.13: { nodename: node-3 }
我们建议在严肃生产部署中使用奇数个 Consul Server,三个为宜。
参数
#-----------------------------------------------------------------
# CONSUL
#-----------------------------------------------------------------
consul_role: node # consul role, node or server, node by default
consul_dc: pigsty # consul data center name, `pigsty` by default
consul_data: /data/consul # consul data dir, `/data/consul`
consul_clean: true # consul purge flag, if true, clean consul during init
consul_ui: false # enable consul ui, the default value for consul server is true