基础设施即代码
将基础设施和数据库视为代码。通过GitOps友好的工作流以声明式方式管理它们。
声明式API
在YAML配置文件中定义您的整个基础设施,类似于Kubernetes CRD。
数据库即代码
通过版本控制的配置管理数据库、用户和访问控制。
GitOps工作流
使用Git对您的基础设施进行版本控制,实现协作和可审计的变更。
声明模块
使用简单的YAML配置定义基础设施模块。以下是声明基本基础设施节点的示例:
# 用于代理、监控、告警等的基础设施集群...
infra: { hosts: { 10.10.10.10: { infra_seq: 1 } } }
# minio集群,兼容s3的对象存储
minio: { hosts: { 10.10.10.10: { minio_seq: 1 } }, vars: { minio_cluster: minio } }
# 用于高可用postgres DCS的etcd集群
etcd: { hosts: { 10.10.10.10: { etcd_seq: 1 } }, vars: { etcd_cluster: etcd } }
# postgres示例集群: pg-meta
pg-meta: { hosts: { 10.10.10.10: { pg_seq: 1, pg_role: primary }, vars: { pg_cluster: pg-meta } }
声明集群
使用声明式配置创建具有高可用性的多节点PostgreSQL集群:
pg-test:
hosts:
10.10.10.11: { pg_seq: 1, pg_role: primary }
10.10.10.12: { pg_seq: 2, pg_role: replica }
10.10.10.13: { pg_seq: 3, pg_role: replica }
vars: { pg_cluster: pg-test }
声明集群内部结构
配置集群内的数据库、用户和访问控制:
pg_databases:
- name: meta
baseline: cmdb.sql
schemas: [pigsty]
extensions:
- { name: postgis, schema: public }
- { name: timescaledb }
comment: pigsty元数据库
pg_users:
- name: dbuser_meta
password: DBUser.Meta
login: true
roles: [dbrole_admin]
pgbouncer: true
comment: pigsty管理员用户
声明访问控制
定义全面的安全策略和访问规则:
pg_hba_rules:
- {user: '${dbsu}', db: all, addr: local, auth: ident}
- {user: '+dbrole_readonly', db: all, addr: intra, auth: ssl}
- {user: '+dbrole_offline', db: all, addr: intra, auth: ssl}
pg_vip_enabled: true
pg_vip_address: 10.10.10.2/24
pg_vip_interface: eth1
patroni_ssl_enabled: true
pgbouncer_sslmode: require